實(shí)現(xiàn)SQL Server動(dòng)態(tài)游標(biāo)的創(chuàng)建步驟
以下的文章主要向大家講述的是實(shí)現(xiàn)SQL Server動(dòng)態(tài)游標(biāo)的創(chuàng)建步驟,以及對(duì)其實(shí)際操作功能,參數(shù)描述,以及創(chuàng)建SQL Server動(dòng)態(tài)游標(biāo)的基本思路的描述,下面就是文章的主要內(nèi)容的詳細(xì)描述。
- CREATE PROCEDURE Usp_CreateCursor(@Select_Command varchar(8000),@Cursor_Return CURSOR VARYING OUTPUT) AS
存儲(chǔ)過程名稱:Usp_CreateCursor
功能描述: 根據(jù)指定的SELECT創(chuàng)建一個(gè)動(dòng)態(tài)游標(biāo)
參數(shù)描述: @Select_Command ---SELECT語句;@Cursor_Return ---要返回的游標(biāo)變量
思路: SQL Server動(dòng)態(tài)游標(biāo)的關(guān)鍵是不知如何去構(gòu)造它的SELECT語句,因?yàn)镾ELECT是個(gè)字符串表量,定義時(shí)不能直接用它,但它可以來源于表。
所以我的目的就是創(chuàng)建一個(gè)統(tǒng)一的表,從中取數(shù)據(jù)不就可以了。建表有一定的語法規(guī)則,所以就應(yīng)該根據(jù)欄位列表生成相應(yīng)的
格式,這個(gè)可以從系統(tǒng)表中獲取。關(guān)鍵的問題是如何將數(shù)據(jù)插入到臨時(shí)表,我摸索出一條語句可
實(shí)現(xiàn)這個(gè)功能,那就是INSERT INTO <TABLE_NAME> EXECUTE <SQL>,而SQL7.0的幫助未講。有表有數(shù)據(jù)就可以創(chuàng)建了。
Declare @Select_Command_Temp Varchar(8000), ---存放SELECT臨時(shí)語法
@Table_List varchar(255), ---存放表的列表
@Column_List varchar(8000),---存放欄位列表
@Table_Name varchar(30),---存放單獨(dú)表名
@Column_Name varchar(30),---存放單獨(dú)欄位名(但有可能是*)
@Column_Syntax varchar(8000),---存放欄位建表時(shí)的語法(綜合)
@Column_Name_Temp varchar(30),---存放欄位名稱
@Column_Type_Temp varchar(30),----存放欄位類型
@Column_Syntax_Temp varchar(8000),---存放欄位建表時(shí)的語法(單個(gè))
@Column_Length_Temp int,---存放欄位長(zhǎng)度
@Column_Xprec_Temp int,---存放欄位精度
@Column_Xscale_Temp int,---存放欄位小數(shù)位數(shù)
@From_Pos int,---存放from的位置
@Where_Pos int,---存放where的位置
@Having_Pos int,---存放having的位置
@Groupby_Pos int,---存放groupby的位置
@Orderby_Pos int,---存放orderby的位置
@Temp_Pos int,---臨時(shí)變量
@Column_Count int,---存放欄位總數(shù)
@Loop_Seq int---循環(huán)步進(jìn)變量
以上的相關(guān)內(nèi)容就是對(duì)SQL Server動(dòng)態(tài)游標(biāo)的創(chuàng)建的介紹,望你能有所收獲。
【編輯推薦】