sql存儲過程怎麼寫
一:創建沒有參數的存儲過程:
CREATE PROCEDURE select_all
AS
BEGIN
SELECT * from T_login1
GO
二:創建帶參數的存儲過程:
CREATE PROCEDURE select_name
@id uniqueidentifier
AS
BEGIN
SELECT * from T_login1 where PSN0001A=@id
GO
(1)sql存儲過程怎麼寫擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
② 使用SQL語句創建存儲過程
使用SQL語句創建存儲的具體過程如下:
1、首先,打開企業管理器,選擇【工具】-【查詢分析器】:
③ sql server 2008 怎麼編寫存儲過程
第一步:點擊資料庫下的「可編程性」,選擇「存儲過程」,點擊滑鼠右鍵,選擇「新建存儲過程」
第二步:在create
PROCEDURE
後
輸入存儲過程的名字,緊跟著的就是定義存儲過程的參數,接下來就可以去編寫自己所需要組裝的存儲過程語句了
第三步:
編譯存儲過程,在工具欄上按下執行按鈕,如果沒有錯誤,就編寫成功了。
第四步:調用:在sqlserver的語句查詢框中,輸入exec
存儲過程名
參數,執行就可以了。
基本語法格式如下:中括弧帶的是可選項
create
proc
|
procere
pro_name
[{@參數數據類型}
[=默認值]
[output],
{@參數數據類型}
[=默認值]
[output],
....
]
as
begin
SQL_statements
--業務處理
end
④ MySQL裡面sql語句調用存儲過程,該如何寫
這樣:
CREATEPROCEDUREsp_add(a int, b int,outc int)
begin
set c=a+ b;
end;
調用過程:
call sp_add (1,2,@a);
select @a;
(4)sql存儲過程怎麼寫擴展閱讀:
注意事項
存儲過程(stored procere)是一組為了完成特定功能的SQL語句集合,經編譯後存儲在伺服器端的資料庫中,利用存儲過程可以加速SQL語句的執行。
存儲過程分為系統存儲過程和自定義存儲過程。
系統存儲過程在master資料庫中,但是在其他的資料庫中可以直接調用,並且在調用時不必在存儲過程前加上資料庫名,因為在創建一個新資料庫時,系統存儲過程在新的資料庫中會自動創建。
自定義存儲過程,由用戶創建並能完成某一特定功能的存儲過程,存儲過程既可以有參數又有返回值,但是它與函數不同,存儲過程的返回值只是指明執行是否成功,並不能像函數那樣被直接調用,只能利用execute來執行存儲過程。
創建存儲過程
SQL Server創建存儲過程:
create procere 過程名
@parameter 參數類型
@parameter 參數類型
。。。
as
begin
end
執行存儲過程:execute 過程名
⑤ sql 中的存儲過程誰能描述下下··謝謝
標准答案:
在最新的SQL2005中的存儲過程(Procere)類似於java語言中的方法,它是SQL語句和控制流語句的預編譯集合。存儲過程在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數,邏輯控制語句以及其他強大的編程功能。
存儲過程可包含邏輯控制語句和數據操作語句,它可以接收參數,輸出參數,返回單個或多個結果集以及返回值。
給你一個例子:
create proc proc_takeMoney
@cardID1 varchar(20), --匯款賬號
@pwd int , --匯款密碼
@takeMoney money, --匯款金額
@cardID2 varchar(20) --存款賬號
as
set nocount on
declare @err int
set @err = 0
if exists(select 1 from cardInfo where cardID = @cardID1 and pass = @pwd)
begin
begin tran --事物開始
update cardInfo set balance = balance + @takeMoney where cardID = @cardID2 --接受款帳戶加上@takeMoney
set @err = @err + @@error
update cardInfo set balance = balance - @takeMoney where cardID = @cardID1 --匯款帳戶減去@takeMoney
set @err = @err + @@error
/*--交易信息表插入交易信息--*/
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID1,'支取',@takeMoney)
set @err = @err + @@error
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID2,'存入',@takeMoney)
set @err = @err + @@error
/*--交易信息--*/
select top 2 * from transInfo order by transDate desc
if(@err<>0)
begin
rollback tran --錯誤回滾事物
end
else
begin
commit tran --無錯誤提交事物
end
end --if結束
else
begin
print '密碼錯誤'
end
/*--調用存儲過程--*/
declare @cardID1 varchar(20),@cardID2 varchar(20),@pwd int ,@takeMoney money
set @cardID1 ='1010 3576 1234 5678' --張三卡號
set @pwd = 888888 --張三密碼
set @cardID2 ='1010 3576 1212 1134' --李四卡號
set @takeMoney =20 --匯款金額
exec proc_takeMoney @cardID1 ,@pwd,@takeMoney,@cardID2
⑥ sql 存儲過程語句編寫
要到達你的要求,在存儲過程中必須使用動態SQL語句。
一個簡化的例子:
createprocereMyDynamicSQL
@tblwherenvarchar(200)--a==aora==xxx
as
begin
declare@sqlnvarchar(max)
--動態拼接sql語句
set@sql=N'select*from[表一]where'+@tblwhere
--執行
executesp_executesql@sql
end