触发器中的临时表:
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触发器、存储过程和函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)