“第一条记录”正确的检索出来了
服务器: 消息 16915,级别 16,状态 1,过程 CreateTree,行 12
名为 'Sub_Cursor1' 的游标已存在。
服务器: 消息 16905,级别 16,状态 1,过程 CreateTree,行 14
游标已打开。
服务器: 消息 16916,级别 16,状态 1,过程 CreateTree,行 43
名为 'Sub_Cursor1' 的游标不存在。
服务器: 消息 16916,级别 16,状态 1,过程 CreateTree,行 46
名为 'Sub_Cursor1' 的游标不存在。
服务器: 消息 16916,级别 16,状态 1,过程 CreateTree,行 47
名为 'Sub_Cursor1' 的游标不存在。

解决方案 »

  1.   

    举例:CREATE PROCEDURE lake_list
       ( @region varchar(30),
         @size integer,
         @lake_list_cursor CURSOR VARYING OUTPUT )
    AS 
    BEGIN
       DECLARE @ok SMALLINT
       EXECUTE check_authority @region, username, @ok OUTPUT
       IF @ok = 1
          BEGIN
          SET @lake_list_cursor =CURSOR LOCAL SCROLL FOR
             SELECT name, lat, long, size, boat_launch, cost
             FROM lake_inventory
             WHERE locale = @region AND area >= @size
             ORDER BY name
          OPEN @lake_list_cursor
          END
    END
    DECLARE @my_lakes_cursor CURSOR
    DECLARE @my_region char(30)
    SET @my_region = 'Northern Ontario'
    EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
    IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
       BEGIN
       /* Some code to tell the user that there is no list of
       lakes for him/her */
       END
    ELSE
       BEGIN
          FETCH @my_lakes_cursor INTO -- Destination here
          -- Continue with other code here.
    END