SQL server语句大全(6)

2019-04-14 19:43

------------------------------------------------------------带有默认值的参数

create proc getScore

@score int =60 ------------默认值 as

select * from score where score>@score go

------------------------------------------------------------执行带默认值参数的存储过程

exec getScore @score =80 ---------自己传入默认值 exec getScore ---------------------参数会使用默认值

----------------------------------------------------------练习存储过程 create proc getStusex

@sex char(2) , ----参数一

@snumb int=1 ---------带默认值的参数一般放在参数的最后 as

select sname,sex,birthday,address from INFO where snumb=@snumb and sex=@sex go

---------------------------------------------执行存储过程

--------------------------------------------建议按照参数名及顺序传参 exec getStusex 1 exec getStusex 1,2

exec getStusex 2,1 --错误的,顺序不对 exec getStusex @sex=0

exec getStusex @snumb=2,@sex=0

exec getStusex , @sex=0 ----错误的,中间有个逗号

-------------------------------------------------------插入海量数据的存储过程

create table dump (

id int identity(1,1), num int ,

name varchar(50) )

----------------------------------------循环插入数据的过程 create proc AddData @num int as

declare @i int --------声明局部变量 set @i =1

while(@i<=@num) begin

insert into dump(num,name ) values(@i ,NEWID ()) set @i =@i+1 end go

exec AddData @num=100000 select * from dump

-----------------------------SQL Server数据库 -存储过程返回值 ----------------------1、output类型参数可以返回值 create proc GetAvg

@Savg decimal(18,2) output --@Savg numeric(6,2) output as

select @Savg= AVG (score) from score go

-------------执行 输出参数,必须声明变量接收传出的参数值 declare @avg decimal(18,2) exec GetAvg @Savg=@avg output

---exec GetAvg @avg output ---简写方式 print @avg

--------------练习:加法,两个加数是in 类型参数,求和,把和返回, --------------和是output类型参数,调用过程输出和 create proc GetSum @numb1 int , @numb2 int , @sum int output as

select @sum= @numb1+@numb2 go

-----------执行存储过程 declare @sums int

exec GetSum @numb1=1,@numb2=1, @sum=@sums output --参数=值 print '和是:'+cast( @sums as varchar)

----------------------2、return语句返回值(SQL Server特殊特点) ---案列:求平均分,,并返回 create proc GetAvger as

declare @avg numeric(6,2)

select @avg =AVG (score ) from score return @avg -------可以通过rertun返回值 go

drop proc GetAvger -----执行存储过程

declare @avge numeric(6,2) exec @avge=GetAvger print @avge

----------return另外的作用,结束程序 create proc text as

print 'aaaaa' return

print 'bbbbb' go

exec text

------------------------------------------------查看系统存储过程 exec sp_help score -------查看对象信息 exec sp_helptext -----------查看原代码 exec sp_rename -----------改名

exec sp_stored_procedures -------查看存储过程

------------查年龄在40以上,返回名字,lastname.firstname||lastname.firstname create proc GetEmployee @age int as

select FirstName+'.'+LastName as 姓名 from Employees where DATEDIFF(YEAR ,BirthDate,getdate()) >@age go

drop proc GetEmployee

exec GetEmployee @age=40

-------------编写过程,计算班级的考试通过率(考试及格人数/ 总人数) create proc GetTexts as

declare @num int declare @count int

declare @ClassText numeric(6,2)

select @num =COUNT(snumb) from score where score>60-------考试通过人数 select @count=COUNT (snumb) from info ------------------总人数 set @ClassText =@num / @count

declare @p int --------------------声明该变量时为了解决00.00%的小数点后位数的问题

set @p =@ClassText*100

print '通过率为:'+cast(@p as varchar)+'%' go

----------执行存储过程 exec GetTexts

--------------------------------触发器的语法 create trigger trigger_name on table_name [with encryption]

for [delete,insert,update] as

T_SQL语句 go

create database bank

create table banks (

customername varchar(20),----账户名 cardid varchar(10),----账户

currentmoney money check(currentmoney>=1) )

create table transinfo (

transdate datetime,----交易时间 cardid varchar(10), ----交易账号 transtype varchar(10),----交易类型 transmonry money )

drop table transinfo

----账户表插入数据

insert into banks values('张三','1001',2000) insert into banks values('李二','1002',200) go

---------------------------------------------------------------------------------------insert触发器

-------------------------------------------------------------------------------------------触发器案例

---当向交易信息表(transinfo)中插入一条交易信息时,自动更新对应账户的余额 ---分析:插入触发器,transinfo表,触发器出发后要update账户表的余额 create trigger trigger_transinfo on transinfo ----触发器创建的表

for insert ---------插入触发器类型 as

------------------------------触发器的内容 ----------------------------1、提取有用数据 declare @cardid varchar(10) ----卡号

declare @transtype varchar(10) ---交易类型 declare @transmoney money ----交易金额

-----------------------------变量赋值---inserted表提供数据

select @cardid =cardid,@transtype=transtype,@transmoney=transmonry from inserted

----------------------------------2、修改余额 ----------------------------------判断交易类型 if(@transtype='存入')

update banks set currentmoney=currentmoney+@transmoney where cardid=@cardid

else if(@transtype='支取')

update banks set currentmoney=currentmoney-@transmoney where cardid=@cardid

print '交易后,账户余额为:'

select * from banks where cardid=@cardid go

------------------------------------测试出发器的功能

insert into transinfo values(GETDATE (),'1001','存入',10000) insert into transinfo values(GETDATE (),'1002','支取',100) insert into transinfo values(GETDATE (),'1002','存入',1000)

select * from transinfo select * from banks

------------------------------------------------------------------------------------------delete触发器

------------------------当删除交易信息表时,要求自动备份被删除的数据到表backup table

--------------------分析:交易信息表,出发类型为delete,触发的功能:把删除的数据添加到backup table中(已存在)

--------------------------表要先创建后添加数据


SQL server语句大全(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:用于银行贷款2013年生物活性修复替换材料项目可行性研究报告(甲

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: