数据库存储过程、触发器、函数的使用

数据库存储过程、触发器、函数的使用

数据库存储过程、触发器、函数

·创建存储过程

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的用户数”