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