-
SQLServer存储过程中事务的使用方法
本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下createprocusp_Stock@GoodsIdint,@Numberint,@StockPricemoney,@SupplierIdint,@EmpIdint,@StockUnitvarchar(50),@StockDatedatetime,@TotalMoneymoney,@ActMoneymoney,@baseIdint,@Descriptionnvarchar(255)asdeclare@errorint=0--事务中操作的错误记录--开启事务begintransaction--实现进货信息的添加insertintoStockInfovalues(@GoodsId,@Number,@StockPrice,@SupplierId,@EmpId,@StockUnit,@StockDate,@TotalMoney,@ActMoney,DEFAULT,@Description,@baseId)set@error+=@@ERROR--记录有可能产生的错误号--获取当前进货信息的标识列--判断当前商品有没有进货记...
数据库操作教程 2022-09-23 17:49:02 -
记一次公司仓库数据库服务器死锁过程及解决办法
死锁的四个必要条件:互斥条件(Mutualexclusion):资源不能被共享,只能由一个进程使用。请求与保持条件(Holdandwait):已经得到资源的进程可以再次申请新的资源...
数据库操作教程 2022-09-23 17:48:19 -
查询Sqlserver数据库死锁的一个存储过程分享
使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁,死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉。利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里.创建sp_who_lock存储过程CREATEproceduresp_who_lockasbegindeclare@spidintdeclare@blkintdeclare@countintdeclare@indexintdeclare@locktinyintset@lock=0createtable#temp_who_lock(idintidentity(1,1),spidint,blkint)if@@error<>0return@@errorinsertinto#temp_who_lock(spid,blk)select0,blockedfrom(select*frommaster..sysprocesseswhereblocked>0)awherenotexists(select*frommas...
数据库操作教程 2022-09-23 17:47:30 -
SQLServer分页查询通用存储过程(只做分页查询用)
自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用...
数据库操作教程 2022-09-23 17:46:44 -
SQLServer两种分页的存储过程使用介绍
由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分页的方法。一、以学生表为例,在数据库中有一个Student表,字段有StudentNo,,LoginPwd,StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel要求:查询学生的信息,每页显示5条记录二、第一种方式分页:利用子查询notin例如:第一页selecttop5*fromStudent第二页:查询前10条中不在前5条的记录,那么就是6-10,也就是第二页selecttop5*fromStudentwhereStudentNonotin(selecttop10StudentnofromStudent)同理可以得到第三页、、、、、、、这种方式相信大家都能明白,这种分页的存储过程写法就不多做介绍,重点介绍下面那种分页方法...
数据库操作教程 2022-09-23 17:46:34 -
sql存储过程几个简单例子
sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解。例1:createprocproc_stu@snamevarchar(20),@pwdvarchar(20)asselect*fromrenwheresname=@snameandpwd=@pwdgo查看结果:proc_stu'admin','admin'例2:下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1.CREATEPROCEDUREVALIDATE@USERNAMECHAR(20),@PASSWORDCHAR(20),@LEGALBITOUTPUTASIFEXISTS(SELECT*FROMRENWHERESNAME=@USERNAMEANDPWD=@PASSWORD)SELECT@LEGAL=1ELSESELECT@LEGAL=0在程序中调用该存储过程,并根据@LEGAL参数的值判断用户是否合法...
数据库操作教程 2022-09-23 17:45:35 -
将表里的数据批量生成INSERT语句的存储过程增强版
有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中目前SQLServer里面是没有相关的工具根据查询条件来生成INSERT语句的,只有借助第三方工具(thirdpartytools)这种脚本网上也有很多,但是网上的脚本还是欠缺一些规范和功能,例如:我只想导出特定查询条件的数据,网上的脚本都是导出全表数据如果表很大,对性能会有很大影响这里有一个存储过程(适用于SQLServer2005或以上版本)--Author:<桦仔>--Blog:<http://www.cnblogs.com/lyhabc/>--Createdate:<//>--Description:<根据查询条件导出表数据的insert脚本>--=============================================CREATEPROCEDUREInsertGenerator(@tableNameNVARCHAR(MAX),@whereClauseNVARCHAR(MAX))AS--Thenitincludesacursort...
数据库操作教程 2022-09-23 17:44:23 -
浅谈基于SQLServer分页存储过程五种方法及性能比较
在SQLServer数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览。创建数据库data_Test:createdatabasedata_TestGOusedata_TestGOcreatetabletb_TestTable--创建表(idintidentity(1,1)primarykey,userNamenvarchar(20)notnull,userPWDnvarchar(20)notnull,userEmailnvarchar(40)null)GO插入数据:setidentity_inserttb_TestTableondeclare@countintset@count=1while@count<=2000000begininsertintotb_TestTable(id,userName,userPWD,userEmail)values(@count,'admin','admin888','[email protected]')set@count=@count+1endsetidentity_inserttb_TestTable...
数据库操作教程 2022-09-23 17:41:12 -
MSSQL事务的存储过程
在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示:房型表:RoomType 房间表:Room 首先这两个表的关系:Room是从表,RoomType是主表,两表有主外键关系,RoomType.rTypeId=Room.rTypeId分析这两个表,我们会发现这样一个问题:在房间表和房型表管理中,当我们修改或者删除一个RoomType表,对应的Room表我们也要做修改和删除,那么我们怎么解决这个问题呢?首先可以在数据库中设置级联删除,或者利用触发器也可以解决、、、这些方法都有一定的弊端,在实际开发中,我们会采取使用事务来解决这个问题,这种方法简单而且开发效率高,容易维护。要求:在删除RoomType的同时把Room表中存在该房型的也删除.思路:在删除RooType的时候,我们通过RoomType.rTypeId=Room.rTypeId找到Room中存在该房型的记录,把也它删掉...
数据库操作教程 2022-09-23 17:41:05 -
SQLSERVER备份数据库存储过程的方法
sqlserver批量导出存储过程在查询分析器中,选中数据库——》右键“任务”——》在弹出菜单中选择“生成脚本”——》“下一步”——》选择你要存储过程所在数据库——》“下一步”——》勾选“存储过程”,并下一步——》勾选你要生成的存储过程名称,并下一步——》选择将脚本保存到文件,并选择保存路径——》完成还有一种直接通过sql语句实现:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROCEDURE[dbo].[dbBak]ASBEGINDECLARE@sqlCommandNVARCHAR(1000)DECLARE@dateTimeNVARCHAR(20)SELECT@dateTime=REPLACE(CONVERT(VARCHAR,GETDATE(),111),'/','')+REPLACE(CONVERT(VARCHAR,GETDATE(),108),':','')SET@sqlCommand='BACKUPDATABASEBLNBusyDataTODISK=''D:DataBaseBakUpbln_'+@dateTime+'...
数据库操作教程 2022-09-23 17:40:54 -
SQLServer存储过程中使用表值作为输入参数示例
在2008之前如果我们想要将表作为输入参数传递给SQLServer存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入。在2008中提供了表值参数...
数据库操作教程 2022-09-23 17:40:50 -
实现SQL分页的存储过程代码
SQL分页的存储过程代码,需要的朋友们直接拿去用,使用非常简单。分享代码如下USE[SendMessage]GO/******Object:StoredProcedure[dbo].[pages]ScriptDate:07/09/201513:46:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROC[dbo].[pages](@tbnamenvarchar(100),--要分页显示的表名@FieldKeynvarchar(1000),--用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段@PageCurrentint=1,--要显示的页码@PageSizeint=10,--每页的大小(记录数)@FieldShownvarchar(1000)='',--以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段@FieldOrdernvarchar(1000)='',--以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC@WhereStringnvarchar(1000)=N''--查询条件)ASbe...
数据库操作教程 2022-09-23 17:40:24