【SQLSERVER】动态游标的实现

方法1:

CREATE   TABLE   #tabTmp(id   int)  
  INSERT   #tabTmp   EXECUTE(‘SELECT   id   FROM   ‘[email protected])  
   
  declare   curOne   cursor   for    
  SELECT   id   FROM   #tabTmp  
  open   curOne  
  FETCH   NEXT   from   curOne   into     @ID



方法2

exec(‘
    declare curOne cursor global
     for‘ + @aSql)
    open curOne 
    fetch  curOne



方法3:

declare  @sql  varchar(2000),  
           @typefield  varchar(100),  
           @tablename  varchar(255),  
           @name  varchar(100)  
select  @typefield  =  ‘‘name‘‘,@tablename  =  ‘‘sysobjects‘‘  
set  @sql  =  ‘‘  declare  cuTemp  cursor  for  ‘‘  
                       +‘‘  SELECT  DISTINCT  ‘‘[email protected]  +  ‘‘  FROM  ‘‘  +  @tablename  
exec  (@sql)    
open  cuTemp    
fetch  cuTemp  into  @name  
while  (@@fetch_status=0)  
begin  
           print  @name  
           fetch  cuTemp  into  @name  
end  
close  cuTemp  
DEALLOCATE  cuTemp

来源:http://www.cnblogs.com/sekihin/archive/2007/05/11/742797.html

时间: 2024-10-09 17:39:08

【SQLSERVER】动态游标的实现的相关文章

『ORACLE』 PLSQL动态游标的使用(11g)

#静态游标指的是程序执行的时候不需要再去解析sql语言,对于sql语句的解析在编译的时候就可以完成的. 动态游标由于含有参数,对于sql语句的解析必须要等到参数确定的时候才能完成. 从这个角度来说,静态游标的效率也比动态游标更高一些. #游标的相关概念: 定义: 游标它是一个服务器端的存储区,这个区域提供给用户使用,在这个区域里 存储的是用户通过一个查询语句得到的结果集,用户通过控制这个游标区域当中 的指针 来提取游标中的数据,然后来进行操作. 实质: 是用户在远程客户端上对服务器内存区域的操作

Oracle异常处理,动态游标

小例子,方便以后查阅. 包头需要声明:   type C_CURSOR is ref cursor; procedure visitcount(in_date number, out_code out number, out_desc out varchar2 ) is t_date number(8); t_datepre number(8); t_sql varchar2(2000); t_tempcount number(8); c_data C_CURSOR; v_cityname va

Oracle动态游标实现动态SQL循环遍历,和静态游标的比较。

动态游标可以遍历动态的表, 格式: TYPE 游标类型 IS REF CURSOR; --定义一个动态游标游标名 游标类型; 如果查询的表的数据不同的,动态变化的,这时候可以用动态游标. 需要注意的是,动态游标的定义, 在普通存储过程中:需要放在 is 后面的第一行. 动态游标通过:open 游标 for 字符串,形式使用,遍历. create or replace procedure P_TEST_SQL is TYPE ref_cursor_type IS REF CURSOR; --定义一

SqlServer之游标深入

原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/introduce-for-sqlserver-cursor-2/ 上一节我们简单讲解了SqlServer的游标的简单创建,本节我们将根据msdn上的创建游标代码来详细讲解游标的创建.以及其特性. 1 DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] 2 [ FORWARD_ONLY | SCROLL ] 3 [

【转】静态游标和动态游标

静态游标在打开时会将数据集存储在tempdb中,因此显示的数据与游标打开时的数据集保持一致,在游标打开以后对数据库的更新不会显示在游标中.   动态游标在打开后会反映对数据库的更改.所有UPDATE.INSERT 和 DELETE 操作都会显示在游标的结果集中,结果集中的行数据值.顺序和成员在每次提取时都会改变. 在定义游标的时候如果不指定STATIC关键字,默认是DYNAMIC的. 动态游标的打开速度比静态游标的打开速度快.当打开静态游标时,必须生成内部临时工作表,而动态游标则不需要. 在联接

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理和自定义异常

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

SQLServer中游标是如何处理数据的?

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力.我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理. 1.游标的组成 游标包含两个部分:一个是游标结果集.一个是游标位置. 游标结果集:定义该游标得SELECT语句返回的行的集合.游标位置:指向这个结果集某一行的当前指针. 2.游标的分类 游标共有3类: API服务器游标 Transaction-SQL游标 API客户端

动态游标(例如表名作为参数)以及动态SQL分析

表名作为参数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; TYPE t_data IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; TYPE t_cur IS REF CURSOR; l_data t_data; l_rec t_cur; l_cur VARCHAR2(4000); v_fm_barcode

存储过程使用动态游标一例

数据表结构如下: SQL> desc record;Name        Type         Nullable Default Comments ----------- ------------ -------- ------- -------- RECORD_GUID VARCHAR2(50) Y                         DNIS        VARCHAR2(15) Y                         ANI         VARCHAR2

ref游标(动态游标)

参照变量--用于存放数值指针的变量    游标变量(ref cursor)   使用游标时,当定义游标时不需要指定相应的select语句,但是当使用    游标时(open时)需要指定select语句,这样一个游标就与一个select语句结合了. 游标实例: 1.请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工姓名和他的工资. 2.在1的基础上,如果某个员工的工资低于200元,就添加100元. declare --定义游标类型 typesp_emp_copy_cursor is