SQLSREVER如何创建和使用动态游标
2008-04-28 11:32
267 查看
CREATEPROCEDUREUsp_CreateCursor(@Select_Commandvarchar(8000),@Cursor_ReturnCURSORVARYINGOUTPUT)AS
/*存储过程名称:Usp_CreateCursor
功能描述: 根据指定的SELECT创建一个动态游标
参数描述: @Select_Command---SELECT语句;@Cursor_Return---要返回的游标变量
思路: 动态游标的关键是不知如何去构造它的SELECT语句,因为SELECT是个字符串表量,定义时不能直接用它,但它可以来源于表。
所以我的目的就是创建一个统一的表,从中取数据不就可以了。建表有一定的语法规则,所以就应该根据栏位列表生成相应的
格式,这个可以从系统表中获取。关键的问题是如何将数据插入到临时表,我摸索出一条语句可
实现这个功能,那就是INSERTINTO<TABLE_NAME>EXECUTE<SQL>,而SQL7.0的帮助未讲。有表有数据就可以创建了。
创建人: 康剑民
创建日期: 2001-07-11
*/
Declare@Select_Command_TempVarchar(8000),---存放SELECT临时语法
@Table_Listvarchar(255),---存放表的列表
@Column_Listvarchar(8000),---存放栏位列表
@Table_Namevarchar(30),---存放单独表名
@Column_Namevarchar(30),---存放单独栏位名(但有可能是*)
@Column_Syntaxvarchar(8000),---存放栏位建表时的语法(综合)
@Column_Name_Tempvarchar(30),---存放栏位名称
@Column_Type_Tempvarchar(30),----存放栏位类型
@Column_Syntax_Tempvarchar(8000),---存放栏位建表时的语法(单个)
@Column_Length_Tempint,---存放栏位长度
@Column_Xprec_Tempint,---存放栏位精度
@Column_Xscale_Tempint,---存放栏位小数位数
@From_Posint,---存放from的位置
@Where_Posint,---存放where的位置
@Having_Posint,---存放having的位置
@Groupby_Posint,---存放groupby的位置
@Orderby_Posint,---存放orderby的位置
@Temp_Posint,---临时变量
@Column_Countint,---存放栏位总数
@Loop_Seqint---循环步进变量
---创建临时表
CreateTable#Test(aint)
---如果传来的SELECT语句不是以'select'开头,自动修改
IfLeft(Lower(Ltrim(@Select_Command)),6)<>'select'Select@Select_Command='Select'+@Select_Command1
/*存储过程名称:Usp_CreateCursor
功能描述: 根据指定的SELECT创建一个动态游标
参数描述: @Select_Command---SELECT语句;@Cursor_Return---要返回的游标变量
思路: 动态游标的关键是不知如何去构造它的SELECT语句,因为SELECT是个字符串表量,定义时不能直接用它,但它可以来源于表。
所以我的目的就是创建一个统一的表,从中取数据不就可以了。建表有一定的语法规则,所以就应该根据栏位列表生成相应的
格式,这个可以从系统表中获取。关键的问题是如何将数据插入到临时表,我摸索出一条语句可
实现这个功能,那就是INSERTINTO<TABLE_NAME>EXECUTE<SQL>,而SQL7.0的帮助未讲。有表有数据就可以创建了。
创建人: 康剑民
创建日期: 2001-07-11
*/
Declare@Select_Command_TempVarchar(8000),---存放SELECT临时语法
@Table_Listvarchar(255),---存放表的列表
@Column_Listvarchar(8000),---存放栏位列表
@Table_Namevarchar(30),---存放单独表名
@Column_Namevarchar(30),---存放单独栏位名(但有可能是*)
@Column_Syntaxvarchar(8000),---存放栏位建表时的语法(综合)
@Column_Name_Tempvarchar(30),---存放栏位名称
@Column_Type_Tempvarchar(30),----存放栏位类型
@Column_Syntax_Tempvarchar(8000),---存放栏位建表时的语法(单个)
@Column_Length_Tempint,---存放栏位长度
@Column_Xprec_Tempint,---存放栏位精度
@Column_Xscale_Tempint,---存放栏位小数位数
@From_Posint,---存放from的位置
@Where_Posint,---存放where的位置
@Having_Posint,---存放having的位置
@Groupby_Posint,---存放groupby的位置
@Orderby_Posint,---存放orderby的位置
@Temp_Posint,---临时变量
@Column_Countint,---存放栏位总数
@Loop_Seqint---循环步进变量
---创建临时表
CreateTable#Test(aint)
---如果传来的SELECT语句不是以'select'开头,自动修改
IfLeft(Lower(Ltrim(@Select_Command)),6)<>'select'Select@Select_Command='Select'+@Select_Command1
相关文章推荐
- SQLSREVER如何创建和使用动态游标
- SQLSREVER如何创建和使用动态游标
- 如何对动态创建控件进行验证以及在Ajax环境中的使用
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- Unity3d如何使用代码动态创建3dText
- 如何创建和使用动态链接(dll)和静态链接(lib),全面总结
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 20. 如何使用CCRenderTexture来创建动态纹理
- 如何使用PHP DOMDocument创建动态XML文件
- 如何使用PHP DOM创建动态的XML文件
- 如何在游标for循环中使用动态SQL语句?
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 创建临时表及如何使用游标SQL
- 如何在游标for循环中使用动态SQL语句?
- 如何动态创建和使用二维数组
- 如何使用C#与XML创建动态分层菜单
- (译)如何使用CCRenderTexture来创建动态纹理
- 如何在定义游标的时候使用动态sql语句?
- 如何在定义游标的时候使用动态sql语句