存储过程

存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业

务规则,存储过程可以带参数,也可以返回结果。
系统存储过程的名称都以“sp_”开头或”xp_”开头,用户也可以在自己的数据库

中创建的存储过程。
系统存储过程 说明
sp_databases 列出服务器上的所有数据库。
sp_helpdb 报告有关指定数据库或所有数据库的信息
sp_renamedb 更改数据库的名称
sp_tables 返回当前环境下可查询的对象的列表
sp_columns 回某个表列的信息
sp_help         查看某个表的所有信息
sp_helpconstraint 查看某个表的约束
sp_helpindex 查看某个表的索引
sp_stored_procedures 列出当前环境中的所有存储过程。
sp_password 添加或修改登录帐户的密码。
sp_helptext 显示默认值、未加密的存储过程、用户定义的存储过程、触发器

或视图的实际文本。
流程控制语句:
IF……ELSE语句
declare @pic float
select @pic=sum(price) from  titles
if @pic>500
begin
print 'more 500'
end
else
begin
print 'less 500'
end
CASE语句
select top 10 orderid,orderid %10 as 'Last Digit',Position=
Case orderid %10
 when 1 then 'First'
 when 2 then 'Second'
 when 3 then 'Third'
 when 4 then 'Fourth'
Else 'Something Else'
end
from orders
WHILE语句
declare @i int
set @i=1
while @i<10
begin
print @i
set @i=@i+1
end
WAITFOR语句
Waitfor
Delay  ‘01:00’  --等待一小时后执行
Print ‘SQL’
TRY/CATCH语句
BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
在 END TRY 和 BEGIN CATCH 语句之间放置任何其他语句都将生成语法错误。
创建有参存储过程
create procedure MyPRO
@id varchar(11),
@contract bit,
@phone char(12) output
as
select @phone=phone from authors where au_id=@id and [contract]

=@contract

--调用存储过程
declare @phone char(12)
exec mypro '267-41-2394',true,@phone output
print @phone
--修改存储过程
alter procedure mypro
as
select au_lname,au_fname from authors

--删除存储过程
drop proc Mypro

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章