sql srever如何创建和使用动态游标--

sql srever如何创建和使用动态游标--

ID:9488115

大小:70.50 KB

页数:9页

时间:2018-05-01

sql srever如何创建和使用动态游标--_第1页
sql srever如何创建和使用动态游标--_第2页
sql srever如何创建和使用动态游标--_第3页
sql srever如何创建和使用动态游标--_第4页
sql srever如何创建和使用动态游标--_第5页
资源描述:

《sql srever如何创建和使用动态游标--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQLSREVER如何创建和使用动态游标>>  创建游标CREATEPROCEDUREUsp_CreateCursor(Select_mandvarchar(8000),Cursor_ReturnCURSORVARYINGOUTPUT)AS/*存储过程名称:Usp_CreateCursor 功能描述:  根据指定的SELECT创建一个动态游标 参数描述:  Select_mand---SELECT语句;Cursor_Return---要返回的游标变量 思路:    动态游标的关键是不知如何去构造它的SELECT语句,因为SELECT是个字符串表量,定义时不能直接用它,但它可以于表。

2、        所以我的目的就是创建一个统一的表,从中取数据不就可以了。建表有一定的语法规则,所以就应该根据栏位列表生成相应的        格式,这个可以从系统表中获取。关键的问题是如何将数据插入到临时表,我摸索出一条语句可        实现这个功能,那就是INSERTINTO<TABLE_NAME>EXECUTE<SQL>,而SQL7.0的帮助未讲。有表有数据就可以创建了。 创建人:   康剑民 创建日期:  2001-07-11*/DeclareSelect_mand_TempVarchar(8000),---存放SELECT临时语法    Tabl

3、e_Listvarchar(255),---存放表的列表    Column_Listvarchar(8000),---存放栏位列表    Table_Namevarchar(30),---存放单独表名    Column_Namevarchar(30),---存放单独栏位名(但有可能是*)    Column_Syntaxvarchar(8000),---存放栏位建表时的语法(综合)    Column_Name_Tempvarchar(30),---存放栏位名称    Column_Type_Tempvarchar(30),----存放栏位类型    Column_Syntax

4、_Tempvarchar(8000),---存放栏位建表时的语法(单个)    Column_Length_Tempint,---存放栏位长度    Column_Xprec_Tempint,---存放栏位精度    Column_Xscale_Tempint,---存放栏位小数位数    From_Posint,---存放from的位置    n_Countint,---存放栏位总数    Loop_Seqint---循环步进变量  ---创建临时表CreateTable#Test(aint)---如果传来的SELECT语句不是以'select'开头,自动修改If

5、Left(Lo(Select_mand)),6)<>'select'SelectSelect_mand='Select'+Select_mand---将开头SELECT去掉SelectSelect_mand_Temp=Lo(Select_mand))IfLeft(Select_mand_Temp,6)='select'SelectSelect_mand_Temp=Right(Select_mand_Temp,Len(Select_mand_Temp)-7)---取各保留字位置,以便获得表的列表SelectFrom_Pos=

6、CHARINDEX('from',Select_mand_Temp)Selectp)SelectHaving_Pos=CHARINDEX('having',Select_mand_Temp)SelectGroupby_Pos=CHARINDEX('groupby',Select_mand_Temp)SelectOrderby_Pos=CHARINDEX('orderby',Select_mand_Temp)  Ifp_Pos=p_PosSelectTemp_Pos=Having_PosIfGroupby_Pos>

7、0AndGroupby_Pos<Temp_PosSelectTemp_Pos=Groupby_PosIfOrderby_Pos>0AndOrderby_Pos<Temp_PosSelectTemp_Pos=Orderby_Pos---取表列表IfTemp_Pos>0 Begin SelectTable_List=SUBSTRING(Select_mand_Temp,From_Pos+6,Temp_Pos-From_Pos-1) EndElse 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。