数据库存储过程、触发器、函数的使用
数据库存储过程、触发器、函数
·创建存储过程
CREATE PROCEDURE 存储过程名称
Use TEST
GO
Create procedure user_insert @uID char(20),@uname varchar(20),@upwd char(20),@num int
As
Begin
While @num>10
Insert into user
Values(@uID,@uname,@upwd)
Set @num=@num+1
Set @uID=@uID+1
end
执行存储过程
Exec user_insert ‘002’,’jc’,’123456’,0 --循环执行插入10条记录
强化
判断user表的userID是否已存在,不存在则加入一条新记录
User TEST
GO
Create procedure user_in @uID char(20) ,@uname char(20), @upwd char(20)
As
Begin
/*判断user表的userID为011是否存在,如果不存在则插入新的记录*/
If not exists (select userID from user where userID=’011’)
Insert into user values(@uID,@uname,@upwd)
end
执行存储过程
Exec user_in ‘011’,’tang’,’123456’
·创建触发器
Create trigger 触发器名称 on 表名
Create trigger delete_user_info on user
After delete
As
Begin
Delete from user_info where userID=(selete userID from deleted)
End
解析:当删除user表记录时,就会触发delete_user_info触发器,并删除user_info中的对应的userID的记录。
(1) ON关键字后面指定触发器执行的表,after 关键字用于说明触发器在指定操作都成功执行后触发,delete关键字表示删除操作后激活触发器
(2) Deleted表是系统临时表,用于保存已从触发器表中删除的记录,当触发器的一个delete触发器时,被删除的记录存放到deleted表中
·创建函数
CREATE FUNCTION 函数名称(@参数名 类型)
Use TEST
GO
Create function L_name(@uname char(20))
Returns int
As
Begin
Declare @sum1
Select @sum1=count(*) from user where username=@uname
Return @sum1
End
执行函数
Declare @sum int
Exec @sum=dbo.L_name(“tang”)
Select @sum as “用户名为tang的用户数”