SqlServer触发器、存储过程和函数

SqlServer触发器、存储过程和函数,第1张

概述--------------------- sqlserver-触发器  -------------  触发器中的临时表:    Inserted    存放进行insert和update *** 作后的数据    Deleted    存放进行delete 和update *** 作前的数据  --创建触发器  Create  trigger  User_OnUpdate       On  ST_User  --------------------- sqlserver-触发器  ------------- 
触发器中的临时表: 
  Inserted 
  存放进行insert和update *** 作后的数据 
  Deleted 
  存放进行delete 和update *** 作前的数据 
--创建触发器 
Create  trigger  User_OnUpdate 
     On  ST_User 
     for  Update 
As 
     declare  @msg nvarchar(50) 
     --@msg记录修改情况 
     select  @msg = N '姓名从“'  + Deleted. name  + N '”修改为“'  + Inserted. name  +  '”'  from Inserted,Deleted 
     --插入日志表 
     insert  into  [LOG](MSG) values (@msg) 
      
--删除触发器 
drop  trigger  User_OnUpdate 
----------------- 存储过程语法 ---------------------- 
--创建带output参数的存储过程 
CREATE  PROCEDURE  PR_Sum 
     @a  int, 
     @b  int,sans-serif; Font-size:14px; line-height:25.200000762939453px">     @ sum  int  output 
AS 
BEGIN 
     set  @ sum =@a+@b 
END 
  
--创建Return返回值存储过程 
CREATE  PROCEDURE  PR_Sum2 
     @b  int 
     Return  @a+@b 
--执行存储过程获取output型返回值 
declare  @mysum  int 
execute  PR_Sum 1,2,@mysum  output 
print @mysum 
--执行存储过程获取Return型返回值 
declare  @mysum2  int 
execute  @mysum2= PR_Sum2 1,2 
print @mysum2--- 

------------------- 自定义函数 ----------------------- 
--函数的分类: 
    1)标量值函数 
    2)表值函数 
        a:内联表值函数 
        b:多语句表值函数 
    3)系统函数 
--新建标量值函数 
create  function  FUNC_Sum1 


returns  int 
as 
begin 
     return  @a+@b 
end 
--新建内联表值函数 
create  function  FUNC_UserTab_1 
     @myID  int 
returns  table 
return  ( select  *  from  ST_User  where  ID<@myID) 
--新建多语句表值函数 
create  function  FUNC_UserTab_2 
returns  @t  table 
     [ID] [ int ]  NOT  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [OID] [ int ]  NOT  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [Login] [nvarchar](50)  NOT  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [Rtx] [nvarchar](4)  NOT  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [ name ] [nvarchar](5)  NOT  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [ Password ] [nvarchar]( max )  NulL,sans-serif; Font-size:14px; line-height:25.200000762939453px">     [State] [nvarchar](8)  NOT  NulL 
     insert  into  @t  select  *  from  ST_User  where  ID<@myID 
     return 
--调用表值函数 
select  *  from  dbo.FUNC_UserTab_1(15) 
--调用标量值函数 
declare  @s  int 
set  @s=dbo.FUNC_Sum1(100,50) 
print @s 
--删除标量值函数 
drop  function  FUNC_Sum1 
自定义函数与存储过程的区别 -------------------- 
--自定义函数: 
  1. 可以返回表变量 
  2. 限制颇多,包括 
    不能使用output参数; 
    不能用临时表; 
    函数内部的 *** 作不能影响到外部环境; 
    不能通过select返回结果集; 
    不能update,delete,数据库表; 
  3. 必须return 一个标量值或表变量 
  自定义函数一般用在复用度高,功能简单单一,争对性强的地方。 
--存储过程 
  1. 不能返回表变量 
  2. 限制少,可以执行对数据库表的 *** 作,可以返回数据集 
  3. 可以return一个标量值,也可以省略return 
   存储过程一般用在实现复杂的功能,数据 *** 纵方面。 总结

以上是内存溢出为你收集整理的SqlServer触发器、存储过程和函数全部内容,希望文章能够帮你解决SqlServer触发器、存储过程和函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1175451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存