存儲過程(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]
--調用存儲過程
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