存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量。 4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权
@@rowcount表示返回受影响的行数
alter proc Proc1 as update Student set Grade=Grade+1 where No < 3 return @@rowcount goOut相当于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相当于存储过程的返回值,不能传入,它是在存储过程中定义,并且输出的
--传入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 @ReceiveSET NOCOUNT { ON | OFF } 如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF这样的话,以达到优化存储过程的目的
