SQL Server 2005 創(chuàng)建簡(jiǎn)單的存儲(chǔ)過程--總結(jié)分析
最近由于工作需要,簡(jiǎn)單了解了下SQL Server 2005 數(shù)據(jù)庫(kù)創(chuàng)建簡(jiǎn)單的在存儲(chǔ)過程。
一、首先說明如何創(chuàng)建存儲(chǔ)過程:
CREATE PROCEDUER my_pro @inputDate varchar ,
//聲明輸入變量 @Result varchar(255) output
//聲明輸出變量 AS declare @variable1 varchar(255)
//聲明varchar變量 declare @variable2 int
//聲明整形變量 BEGIN IF ...(條件) BEGIN ....(執(zhí)行內(nèi)容) END ELSE BEGIN ....(執(zhí)行內(nèi)容) END END
以上就是創(chuàng)建一個(gè)簡(jiǎn)單的存儲(chǔ)過程方法。
二、刪除存儲(chǔ)過程 DROP PROCEDURE my_pro
三、執(zhí)行存儲(chǔ)過程
(1)執(zhí)行沒有參數(shù)的存儲(chǔ)過程:EXECUTE my_pro
(2)執(zhí)行有參數(shù)的存儲(chǔ)過程:
EXECUTE my_pro '輸入變量'
(1)執(zhí)行有參數(shù)且有返回值(即有輸出變量)的存儲(chǔ)過程:
declare @Result varchar(1024)
//聲明輸出變量 EXECUTE my_pro '輸入變量' @Result output
//讓該存儲(chǔ)過程輸出值保存到@Result中 select @Result as result
//查詢結(jié)果返回
四、例子下面需要將查詢多條記錄結(jié)果,使用一條返回值進(jìn)行返回。
例如:有表Test中,其中有兩個(gè)字段為Test01與Test02,把Test01 > 10000的記錄,讓查詢Test02結(jié)果進(jìn)行合并,合并成一條記錄來(lái)返回。
則返回結(jié)果為:WSXEDCRFVTGB. Test01 Test02 10000 QAZ 10001 WSX 10002 EDC 10003 RFV 10004 TGB 那么,使用存儲(chǔ)過程,使用存儲(chǔ)過程中的游標(biāo),可以進(jìn)行for循環(huán)來(lái)進(jìn)行多條記錄的合并。將可以解決這個(gè)問題。
具體存儲(chǔ)過程如下:
DROP PORCEDURE my_Cursor
//習(xí)慣性,創(chuàng)建之前,先看看該存儲(chǔ)過程是否存在 CREATE PROCEDURE my_Cursor @id int ,
//聲明輸入變量
@Result varchar(255) output
//聲明輸出變量,注意一定要有output關(guān)鍵字,否則默認(rèn)為輸入變量 AS Declare city_cursor cursor for
–聲明游標(biāo)變量 Select [Test01] from Test where Test01 > @id
–其中@id為輸入變量 Set @Result = ‘'
–設(shè)置變量@Result值 Declare @Field int
–聲明臨時(shí)存放查詢到的Test01的變量 Open city_cursor
–打開游標(biāo) Fetch next from city_cursor into @Field
–將實(shí)際Test01賦給變量,進(jìn)行循環(huán) While(@@fetch_status=0)
–循環(huán)開始 BEGIN If @Result = ‘' BEGIN Select @Result = Test02 from Test where Test01 = @Field END ELSE BEGIN Select @Result = @Result + ‘,' + Test02 from Test where Test01 = @Field END Fetch next from city_cursor into @Field
–循環(huán)下一個(gè)Test01 END Close city_cursor
–關(guān)閉游標(biāo) Deallocate city_cursor
–釋放游標(biāo)引用 GO (結(jié)束) 以下是執(zhí)行 Declare @Result varchar(1024) EXECUTE my_pro 10000 ,@Result output
–output關(guān)鍵字一定得寫,如果是多個(gè)輸入?yún)?shù),則使用“,”號(hào)來(lái)區(qū)分 Select @Result as result –查詢結(jié)果
相關(guān)文章
SQL事務(wù)用法begin tran,commit tran和rollback tran的用法
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran來(lái)使用事務(wù)。begin tran表示開始事務(wù), commit tran表示提交事務(wù),rollback tran表示回滾事物2011-12-12利用sys.sysprocesses檢查SqlServer的阻塞和死鎖
Sys.SysProcesses 系統(tǒng)表是一個(gè)很重要的系統(tǒng)視圖,主要用來(lái)定位與解決Sql Server的阻塞和死鎖2011-10-10SQL SERVER 查詢正在實(shí)行的SQL語(yǔ)句
SQL SERVER 查詢正在實(shí)行的SQL語(yǔ)句的實(shí)現(xiàn)代碼2009-06-06SQL2000個(gè)人版 應(yīng)用程序正常初始化失敗0乘以C0000135失敗
應(yīng)用程序正常初始化(0*c0000135)失敗。是什么意思?2011-01-01SQLSERVER編譯與重編譯發(fā)生場(chǎng)景及重用的利弊介紹
本文將介紹編譯的含義;執(zhí)行計(jì)劃重用的利弊以及重編譯的發(fā)生場(chǎng)景等等,為您學(xué)習(xí)SQLSERVER編譯與重編譯打下很好的基礎(chǔ),感興趣的朋友可以了解下2013-01-01SQL Server把某個(gè)字段的數(shù)據(jù)用一條語(yǔ)句轉(zhuǎn)換成字符串
這篇文章主要介紹了SQL Server把某個(gè)字段的數(shù)據(jù)用一條語(yǔ)句轉(zhuǎn)換成字符串,本文講解使用一條語(yǔ)句把字段中的數(shù)據(jù)查詢出來(lái)并以指定分割符組成字符串,需要的朋友可以參考下2015-07-07SqlServer實(shí)現(xiàn)類似Oracle的before觸發(fā)器示例
本節(jié)主要介紹了SqlServer如何實(shí)現(xiàn)類似Oracle的before觸發(fā)器,需要的朋友可以參考下2014-08-08