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