zoukankan      html  css  js  c++  java
  • 游标

    在存储过程或触发器中使用 Transact-SQL 游标的典型过程为:

    1. 声明 Transact-SQL 变量包含游标返回的数据。为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值,并声明变量的类型为可从列数据类型隐式转换得到的数据类型。
    2. 使用 DECLARE CURSOR 语句将 Transact-SQL 游标与 SELECT 语句相关联。另外,DECLARE CURSOR 语句还定义游标的特性,例如游标名称以及游标是只读还是只进。
    3. 使用 OPEN 语句执行 SELECT 语句并填充游标。
    4. 使用 FETCH INTO 语句提取单个行,并将每列中的数据移至指定的变量中。然后,其他 Transact-SQL 语句可以引用那些变量来访问提取的数据值。Transact-SQL 游标不支持提取行块。
    5. 使用 CLOSE 语句结束游标的使用。关闭游标可以释放某些资源,例如游标结果集及其对当前行的锁定,但如果重新发出一个 OPEN 语句,则该游标结构仍可用于处理。由于游标仍然存在,此时还不能重新使用该游标的名称。DEALLOCATE 语句则完全释放分配给游标的资源,包括游标名称。释放游标后,必须使用 DECLARE 语句来重新生成游标。
      -----------------------------------------------------
      /*
       Use DECLARE @local_variable, DECLARE CURSOR and SET. */
      USE AdventureWorks
      GO

      DECLARE @MyVariable CURSOR

      DECLARE MyCursor CURSOR FOR
      SELECT LastName FROM AdventureWorks.Person.Contact

      SET @MyVariable = MyCursor
      GO
      /* Use DECLARE @local_variable and SET */
      DECLARE @MyVariable CURSOR

      SET @MyVariable = CURSOR SCROLL KEYSET FOR
      SELECT LastName FROM AdventureWorks.Person.Contact;
      DEALLOCATE MyCursor;
      -----------------------------------------------------
      USE AdventureWorks
      GO
      -- Declare the variables to store the values returned by FETCH.
      DECLARE @LastName varchar(50), @FirstName varchar(50)

      DECLARE contact_cursor CURSOR FOR
      SELECT LastName, FirstName FROM Person.Contact
      WHERE LastName LIKE 'B%'
      ORDER BY LastName, FirstName

      OPEN contact_cursor

      -- Perform the first fetch and store the values in variables.
      --
       Note: The variables are in the same order as the columns
      --
       in the SELECT statement. 

      FETCH NEXT FROM contact_cursor
      INTO @LastName@FirstName

      -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
      WHILE @@FETCH_STATUS = 0
      BEGIN

         
      -- Concatenate and display the current values in the variables.
         PRINT 'Contact Name: ' + @FirstName + ' ' +  @LastName

         
      -- This is executed as long as the previous fetch succeeds.
         FETCH NEXT FROM contact_cursor
         
      INTO @LastName@FirstName
      END

      CLOSE contact_cursor
      DEALLOCATE contact_cursor
      GO



  • 相关阅读:
    软件架构的数据流总结(一)
    软件架构的控制流总结
    软件架构的控制流总结
    并行编程架构(指令流水、进程、线程、多核,Pipe and Filter)
    并行编程架构(指令流水、进程、线程、多核,Pipe and Filter)
    初窥深度学习
    初窥深度学习
    神经网络总结(初稿)
    神经网络总结(初稿)
    Survey of single-target visual tracking methods based on online learning 翻译
  • 原文地址:https://www.cnblogs.com/jes_shaw/p/2004271.html
Copyright © 2011-2022 走看看