游标的一个例子

简介:

 

-- -Author:Sam Lin
--
-Date:Nov.08,2007
--
-Memo:导入通用查询数据

CREATE   Procedure  GetCommonQueryItems
(
    
@TableName   VarChar ( 100 ),    -- 表/视图名称
     @BusinessPageName   VarChar ( 255 -- 业务页面名称
)
AS
Begin
print   @TableName
    
Declare   @ItemID   int       -- 生成数据的ID
     DeClare   @ItemsCount   int   -- 对某一类数据的统计
     DeClare   @Items_Cursor   Cursor      -- 声明游标
     DeClare   @ItemName   VarChar ( 50 )    -- 字段名
     DeClare   @ItemDataType   VarChar ( 50 )
    
Set   @ItemID   =   0
             
Select   @ItemsCount   =   Count (ID)  From  Sys_Query
    
If ( @ItemsCount   >   0 )
        
Select   @ItemID   =   Max (ID)  from  Sys_Query
print   @ItemID
    
Select   @ItemsCount   =   Count (ID)  From  Sys_Query  Where  TableName  =   @TableName   And  BusinessPageName  =   @BusinessPageName
    
If  ( @ItemsCount   >   0 )
    
Begin
        
Select   @ItemID   =  ID  From  Sys_Query 
            
Where  TableName  =   @TableName   And  BusinessPageName  =   @BusinessPageName     
    
End
    
Else
    
Begin     
    
Set   @ItemID   =   Convert ( int , @ItemID +   1
    
End
print   @ItemID
    
-- -开始执行游标
     Begin   Tran
        
Set   @Items_Cursor   =   Cursor   For
            
Select   -- @ItemID,
                A.Name  As  FieldName,
                C.Name 
As  FieldType -- ,
                 -- '50' As FieldSize,
                 -- B.Name AS TableName,
                 -- @BusinessPageName As BusinessPageName,
                 -- Null,
                 -- 99 As OrderID,
                 -- 0 As IsVisible
             From  SysColumns A,
                 SysObjects B,
                 SysTypes C
            
Where  A.ID  =  B.ID  And  A.xtype  =  C.xtype
            
And  B.Name  =   @TableName
            
And  C.Name  Not   Like   ' %DOM% '
            
And  C.Name  Not   Like   ' %IDE% '
            
And  C.Name  Not   Like   ' %sysname% '
        
-- 打开游标
         Open   @Items_Cursor
        
-- 取数据
         Fetch   Next   From   @Items_Cursor   Into    @ItemName , @ItemDataType
            
        
While   @@Fetch_Status   =   0
        
Begin

            
Select   @ItemsCount   =   Count ( * From  Sys_Query  Where  
                    FieldName 
=   @ItemName   And  FieldType  =   @ItemDataType   And  
                    TableName 
=   @TableName   And  BusinessPageName  =   @BusinessPageName

            
If  ( @ItemsCount   >   0 )
            
Begin
                
Fetch   Next   From   @Items_Cursor   Into    @ItemName , @ItemDataType
                
Continue
            
End
                
            
If   @ItemsCount   =   0
            
Begin
                
Insert   Into  Sys_Query(ID,FieldName,FieldType,FieldSize,TableName,BusinessPageName)
                        
Values (
                            
@ItemID ,
                            
@ItemName ,
                            
@ItemDataType ,    
                            
' 50 ' ,
                            
@TableName ,
                            
@BusinessPageName
                            )
            
End
        
End
        
        
If   @@Error   !=   0
        
Begin
            
RollBack   Tran
            
Return
        
End     
        
Fetch   Next   From   @Items_Cursor   Into    @ItemName , @ItemDataType     
    
Commit   Tran
    
-- 关闭游标
     Close   @Items_Cursor
    
-- 释放游标
     Deallocate   @Items_Cursor
    
    
Select   *   from  Sys_Query  where  ID  =   @ItemID     
End

GO


本文转自Sam Lin博客园博客,原文链接:http://www.cnblogs.com/samlin/archive/2008/02/20/1074750.html,如需转载请自行联系原作者


目录
相关文章
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
246 0
|
11月前
|
存储 SQL 关系型数据库
MySQL基础-变量/流程控制/游标/触发器
MySQL基础-变量/流程控制/游标/触发器
|
6月前
|
存储 SQL Oracle
|
6月前
|
存储 SQL 关系型数据库
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
95 0
|
存储 Oracle 关系型数据库
MySql存储过程游标循环问题解决过程
MySql存储过程游标循环问题解决过程
200 0
|
存储 SQL 安全
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
|
存储
关键字查找相关存储过程,函数和视图
关键字查找相关存储过程,函数和视图
下一篇
无影云桌面