存储过程
什么是存储过程存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 为什么要用存储过程1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 例子表Student无参数存储过程create proc Proc1 as //此处 as 不可以省略不写 begin //begin 和 end 是一对,相当于花括号,形成一个语句块,结构清晰,不可以只写其中一个,但可以都不写 select * from Student end go //go在存储过程或语句中起结束,终止上面语句的作用。标识一批sql到这里就要提交执行,相当于一个批处理
修改存储过程alter proc Proc1 as select No from Student go
执行存储过程exec Proc1
有返回值的存储过程@@rowcount表示返回受影响的行数 alter proc Proc1 as update Student set Grade=Grade+1 where No < 3 return @@rowcount go
有输入参数的存储过程alter proc Proc1 @no int as select * from Student where No=@no go --执行该存储过程 exec Proc1 2 或者 exec Proc1 @no=2
使用outOut相当于C#中的ref参数(传进、传出缺一不可),而且传进传出的时候都要标识为ref alter proc Proc1 @no int,@count int out as set @count = @count+@no go --执行该存储过程 declare @Receive int --声明变量 set @Receive =100 --给变量赋值 exec Proc1 2,@Receive out --传入两个变量 select @Receive --值为102
使用output相当于存储过程的返回值,不能传入,它是在存储过程中定义,并且输出的 --传入no,返回No比no大的有多少个
alter proc Proc1 @no int,@count int output as select @count=COUNT(*) from Student where No>@no go --执行该存储过程 declare @Receive int --声明一个变量用来接收存储过程的@count exec Proc1 2,@Receive output select @Receive
使用NOCOUNTSET NOCOUNT { ON | OFF } 如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF这样的话,以达到优化存储过程的目的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |