存储过程语句

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实现存储过程
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ [ OUT [ PUT ] ] --名称、类型、默认值、方向
[ ,...n ]
[ WITH [ ,...n ]
[ FOR REPLICATION ]
AS
{ [;][ ...n ] | } --SQL语句
[;]
::=
[ ENCRYPTION ]
[ RECOMPILE ] --运行时编译
[ EXECUTE_AS_Clause ]
::= { [ BEGIN ] statements [ END ] }
::= EXTERNAL NAME assembly_name.class_name.method_name


一、变量和参数

如:DECLARE @MyCounter int
二、流程控制语句
1、BEGIN 和 END 语句

IF (@@ERROR <> 0)
BEGIN
SET @ErrorSaveVariable = @@ERROR
PRINT 'Error encountered, ' +
CAST(@ErrorSaveVariable AS VARCHAR(10))
END

2、GOTO 语句
IF(1=1)
GOTO calculate_salary
print 'go on' --条件成立则跳过此句。
calculate_salary:
print 'go to'

3、IF...ELSE 语句

if(1=1)
print 1
else if(2=2)
print 2
else if(3=3)
print 3
else
print 0

程返回 0

RETURN 语句无条件终止查询、存储过程或批处理。
如果 RETURN 未指定值,则存储过
4、RETURN 语句

5、WAITFOR 语句

WAITFOR 语句挂起批处理、存储过程或事务的执行,直到发生以下情况
已超过指定的时间间隔。
到达一天中指定的时间。

DELAY 关键字后为 time_to_pass,是指完成 WAITFOR 语句之前等待的时间。完成 WAITFOR 语句之前等待的时间最多为 24 小时。
如:

WAITFOR DELAY '00:00:02'
SELECT EmployeeID FROM Employee;

TIME 关键字后为 time_to_execute,指定 WAITFOR 语句完成所用的时间。
GO
BEGIN
WAITFOR TIME '22:00';
DBCC CHECKALLOC;
END;
GO
6、WHILE...BREAK 或 CONTINUE 语句
只要指定的条件为 True 时,WHILE 语句就会重复语句或语句块。REAK 或 CONTINUE语句通常和WHILE一起使用。BREAK 语句退出最内层的 WHILE 循环,CONTINUE 语句则重新开始 WHILE 循环。
go
declare @Num int
declare @ID int
declare @i int
set @i=1
while(exists(select * from T where Num<5 )) --获取数量小于5的记录
begin
select @Num=Num,@ID=ID from T where Num<5 order by ID desc
print Str(@i)+ '编号:'+Str(@ID)+ ' 值'+str(@Num)
update T set Num=Num*2 where ID=@ID
set @i=@i+1
if(@i>3)
break --退出循环

end
7、CASE 语句
CASE 函数用于计算多个条件并为每个条件返回单个值。CASE 函数通常的用途是将代码或缩写替换为可读性更强的值
--用法一:
select ID,
Grade=Case Num
when 1 then '不及格'

when 2 then '不及格'
when 3 then '不及格'
when 4 then '良好'
else '优秀'
end
from T
---用法二:
select ID,
Grade=Case
when Num<3 then '不及格'
when Num=3 then '及格'
when Num=4 then '良好'
when Num>4 then '优秀'
end
from T

SQL的存储过程 语法格式是什么?
---判断是否存在存储过程
if exists( select name from sysobjects where name='proc_name' )
drop proc proc_name
go

---创建存储过程
create proc proc_name
@parameter varchar(20),
@parameter2 int
as
主体语句
go

if exists:判断是否存在
drop proc : 删除存储过程,后面接存储过程名称,名称不用引起来
create proc: 创建存储过程,后面接存储过程名称,名称不用引起来
@parameter varchar(20): 参数,在执行存储过程的时候需要传入的参数,这里是字符类型,如果有多个参数的话,除了最后一个参数,其他的参数后面需要加逗号(英文状态),如果不需要传入,直接去掉就行了。
create proc proc_name
as
主体语句
go

as : 关键字
主体语句:就是你要做的操作的语句,和平时的完全一样,存储过程就相当把平时的sql语句在外面加了个壳的感觉。比如这里你需要查询一个表 select * from tableName1 那么这里就这样写
create proc proc_name
as
select * from tableName1
go
传参数:
create proc proc_name
@parameter varchar(20)
as
select * from tableName where name=@parameter
go
执行的时候这样
exec proc_name '小明'



其他的操作都是这样的。

希望对你有帮助



相关文档
最新文档