SQL Server 存储过程和触发器sql语句练习

--1.查找18岁以上姓张的年龄最大的前20%
select top 20 percent * from stu
where 年龄>18 and 姓名 like '张_'
go


--2.创建存储过程,在stu表中性别那一列插入“男”或“女”时,在表中记录的是“1”或“0”
create procedure stu_insert  @num int,@name char(5),@sex char(6)
as 
	if @sex='男'
	insert into stu values(@num,@name,1,null)
	else
	if @sex='女'
	insert into stu values(@num,@name,0,null)
go

exec stu_insert 7,'赵四',男
go

--3.创建存储过程,输入学号,输出性别(显示的是“男”或“女”)
create proc stu_out @num int,@sex char(6) output
as
	declare @se bit
	set @se=(select 性别 from stu where 学号=@num)
	if @se=1
	set @sex='男'
	else if @se=0
	set @sex='女' 
go

declare @sex char(6)
exec stu_out 2 ,@sex output
select @sex;
go

--新建一个表,在表中创建一个触发器,每次插入操作时,变量@str值会显示。
create table table1(a int)
go

create trigger table1_insert on table1 after insert
as
	declare @str char(50)
	set @str='trigger is working'
	print @str
go

insert into table1 values(1)
select * from table1

--instead of触发器触发时只执行触发器内部的sql语句,而不执行激活该触发器的sql语句。
create table table2(a int)
go

create trigger table2_insert on table2 instead of insert
as
	print 'instead of trigger is working'
go

insert into table2 values(1)
select * from table2

select * from cjb
select * from kcb
select * from xsb
go

--创建触发器,当向成绩表中插入一个学生的成绩时,将学生表中该学生的总学分加上添加的课程分数
create trigger cjb_insert on cjb after insert
as
	declare @num char(6),@kc_num char(3),@xf int
	select @num=学号,@kc_num=课程号 from inserted
	select @xf=学分 from kcb where 课程号=@kc_num
	update xsb set 总学分=总学分+@xf where 学号=@num
	print '修改成功'
go

注意事项:

1、理解存储过程中的输入参数和输出参数。

2、定义参数的类型

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值