儲存過程是由一些sql語句和控制語句組成的被封裝起來的過程,它駐留在資料庫中,可以被客戶應用程式呼叫,也可以從另乙個過程或觸發器呼叫。它的引數可以被傳遞和返回。與應用程式中的函式過程類似,儲存過程可以通過名字來呼叫,而且它們同樣有輸入引數和輸出引數
儲存過程的好處:
1.由於資料庫執行動作時,是先編譯後執行的。然而儲存過程是乙個編譯過的**塊,所以執行效率要比t-sql語句高。
2.乙個儲存過程在程式在網路中互動時可以替代大堆的t-sql語句,所以也能降低網路的通訊量,提高通訊速率。
3.通過儲存過程能夠使沒有許可權的使用者在控制之下間接地訪問資料庫,從而確保資料的安全。
建立儲存過程
create proc[edure] 儲存過程名@引數1 資料型別 = 預設值 output,
…… ,
@引數n 資料型別 = 預設值 output
assql語句
go
1.只返回單一記錄集的儲存過程
create proc newfolderasselect * from student
go2.有返回值的儲存過程exec newfolder --呼叫儲存過程
create proc insetfile3.有輸入引數和輸出引數的儲存過程@returnrow int output
asinsert into f_hsz(id,fid,uid) select newid(),'1','2'
set @returnrow=1
go--呼叫用帶有返回值的儲存過程
declare @returnrow int
exec insetfile @returnrow output
print @returnrow
create proc insetfile4.在儲存過程中使用事物@id varchar(100)
@returnrow int output
asdeclare @nid varchar(100) --儲存過程宣告臨時變數
select @nid=id from fole where id=@id
insert into f_hsz(id,fid,uid) select newid(),'1',@nid
set @returnrow=1
go--呼叫帶有輸入輸出引數的儲存過程
declare @returnrow int
exec insetfile '20', @returnrow output
print @returnrow
create proc insetfile@retunrow int output
asdeclare @error int =0 --事務中操作的錯誤記錄
declare @trancount int
set nocount on; --on表示不返回計數 set nocount
set xact_abort on; --當執行事務時,如果出錯,會將transcation設定為uncommittable狀態
print @@trancount
begin try
begin tran
insert into f_hsz(id,fid,uid) select newid(),'1','22'
insert into f_hsz(id,fid,uid) select newid(),'1',2
set @retunrow=1
commit tran
return @retunrow
end try
begin catch
if xact_state()=-1
begin
rollback tran; --回滾事務
set @retunrow=0
return @retunrow
endend catch
set xact_abort off;
go
設定 xact_abort on/off , 指定是否回滾當前事務,為on時如果當前sql出錯,回滾整個事務,為off時如果sql出錯回滾當前sql語句,其它語句照常執行讀寫資料庫今天的儲存過程就到此為止了!
晚安
sql server t sql語句總結
1.宣告變數 declare name nvarchar 10 宣告 set name 武大 賦值 print name 輸出 2.檢視全域性變數 print servername select version 檢視當前資料庫版本 select from classinfo insert into ...
SQLServer TSQL 游標使用語法
t sql api 客戶端游標 開啟游標 open cursor name 檢索游標記錄 fetch cursor name fetch first fetch next fetch prior fetch last fetch absolute n fetch relative n 關閉游標 cl...
SqlServer T SQL的簡介及基本用法
sql server用於運算元據庫的程式語言為transaction sql,簡稱t sql。t sql與pl sql不同,並沒有固定的程式結構。t sql包括以下4個部分 ddl 定義和管理資料庫及其物件,例如create alter和drop等。dml 實現對資料庫表各物件的操作,例如inser...