弦月下的SQL<8> SQL存储过程和触发器代码
来源:互联网 发布:人人网数据库 编辑:程序博客网 时间:2024/06/04 20:02
1、创建一个存储过程
create proc 学生信息查询
as
select * from student
2、可以创建更复杂的存储过程,有多张表构成存储过程
create proc 成绩查询
as
select s_name,c_id,a_average
from student ,course,average
where student.s_no=average.a_no
order by s_class
3、执行存储过程
exec 学生信息查询
4、查询存储过程的代码
sp_helptext 学生信息查询
5、查询存储过程的信息
sp_help 学生信息查询
6、删除存储过程
drop procedure 学生信息查询
7、带参数的存储过程
use[KING]
go
create proc 按照姓名查询 @xm varchar(8)
as
if exists(select * from student where s_name=@xm)
select * from student where s_name=@xm
else
print 'nothing!!!'
关于带参数的存储过程的使用方法:
exec 按照姓名查询 'killer'
8、在存储过程中使用参数
USE [KING]
GO
create proc 成绩审核 @xh char(11),@x tinyint
as
select @x=count(*) from average where a_no=@xh and a_average<60
if @x=0
print '成绩合格'
else
print '有'+str(@x)+'门课挂掉了'
使用参数的存储过程的使用方法:
USE [KING]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[成绩审核]
@xh = NULL,
@x = NULL
SELECT 'Return Value' = @return_value
GO
9、更新表中信息的存储过程
USE [KING]
GO
create proc 学分填充
as
begin
update average set c_score=(select c_score from course where average.a_id=course.c_id)
update average set c_score=0 where a_average<60
end
10、带有输出参数的存储过程
create proc 总学分查询 @xh char(11),@zxf decimal(4,1) output
as
set @zxf=(select sum(c_score) from average where a_id=@xh)
print @xh+'已修学分: '+str(@zxf,4,1)+'分'
执行带输出参数的存储过程的时候,需要先定义参数,并且给输入参数@xh赋值,输出参数不需要赋值。从存储过程中获得的返回值可以提供给用户使用。
查询方法:
USE [KING]
GO
DECLARE @return_value int,
@zxf decimal(4, 1)
EXEC @return_value = [dbo].[总学分查询]
@xh = N'killer',
@zxf = @zxf OUTPUT
SELECT @zxf as N'@zxf'
SELECT 'Return Value' = @return_value
GO
11、触发器建立
use[KING]
go
create trigger 学分生成 on average
for insert
as
declare @xh char(11),@cj decimal(4,1) ,@kch char(6)
select @xh=(select a_no from inserted)
select @cj=(select a_average from inserted)
select @kch=(select a_id from inserted)
if @cj>=60
update average set c_score =(select c_score from course where course.c_id=@kch)
where a_no=@xh and a_id =@kch
else
update average set c_score =0
where a_no=@xh and a_id =@kch
12、查看触发器
use[KING]
go
exec sp_helptrigger average
注意:其触发器一定是和表所绑定的。
13、修改触发器(格式)
AlterTRIGGER trigger_name
ON table_name
for ([INSERT][,][DELETE][,][UPDATE])
AS
14、删除触发器
Drop trigger 学分生成
注意:调用Delete:因为删除操作而引起触发行为。
弦月下的SQL<4> SQL语言基础
- 弦月下的SQL<8> SQL存储过程和触发器代码
- 弦月下的SQL<前言>
- 弦月下的SQL<6> 索引和视图
- 弦月下的SQL<7> 游标和事务
- 弦月下的SQL<1> 数据库管理
- 弦月下的SQL<2> 数据库管理
- 弦月下的SQL<5> 数据完整性
- 弦月下的SQL<4> SQL语言基础
- SQL存储过程、触发器
- 触发器VS存储过程 之 一个SQL菜鸟眼中的触发器和存储过程
- Sql Server 存储过程和触发器
- SQL SERVER 存储过程和触发器
- sql server 存储过程和触发器
- SQL存储过程、触发器和游标
- SQL SERVER存储过程和触发器
- SQL 2005 的存储过程和触发器调试大法
- SQL 2005 的存储过程和触发器调试
- SQL 2005 的存储过程和触发器调试大法
- codevs 1041 Car 的旅行路线 最短路+代码能力
- POJ 1195 Mobile phones(二维树状数组)
- Hibernate主键生成策略的类型的使用说明
- 第4周项目1 求最大公约数
- js中this指向总结
- 弦月下的SQL<8> SQL存储过程和触发器代码
- JDBC连接SqlServer
- 那么蒙特卡洛树搜索(Monte Calro Tree Search, MCTS)究竟是啥
- js删除数组里的某个元素
- 必须知道的十二大著名法则
- 求数组中出现次数大于数组长度一半的元素
- MySQL数据记录基本操作——添加数据、更新数据和删除数据
- HD 2044 一只小蜜蜂(递推)
- 文件资源处理、文件指针与锁定