【问题标题】:Why is this Sybase fetch statement not working?为什么这个 Sybase fetch 语句不起作用?
【发布时间】:2011-10-20 15:55:15
【问题描述】:
declare @coltype char(60)
declare @cname char(60)
declare col_crsr cursor for SELECT cname,coltype from sys.syscolumns
                             where tname = 'abmc_customer_user'
                               for update of cname
set cursor rows 4 for col_crsr
open col_crsr
fetch col_crsr
close col_crsr
deallocate cursor col_crsr

在此,执行 fetch 后,它应该显示行,但显示执行时间:0.0031 秒。 怎么了?

【问题讨论】:

    标签: sybase


    【解决方案1】:

    在大多数 SQL 方言中,您需要围绕 FETCH 进行循环以获取多行,并且您还需要指定数据的去向(要提取到哪些变量中),并且您需要必须采取一些步骤才能显示数据。

    【讨论】:

    • declare @coltype char(60) declare @cname char(60) declare @i int select @i=3 为 SELECT cname 声明 col_crsr cursor,coltype from sys.syscolumns where tname = 'abmc_customer_user' for更新 cname set cursor rows 20 for col_crsr open col_crsr while @i
    • declare @coltype char(60) declare @cname char(60) declare @i int select @i=3 为 SELECT cname 声明 col_crsr cursor,coltype from sys.syscolumns where tname = 'abmc_customer_user' for更新 cname set cursor rows 20 for col_crsr open col_crsr while @i
    【解决方案2】:

    您可以尝试这样循环游标并将值提取到您的变量中,然后选择变量...

    声明@coltype char(60)

    声明@cname char(60)

    为 SELECT cname,coltype from sys.syscolumns 声明 col_crsr 游标 其中 tname = 'abmc_customer_user' 用于更新 cname

    为 col_crsr 设置光标第 4 行

    用 HOLD 打开 col_crsr

    获取 col_crsr INTO @coltype,@cname

    WHILE (@@sqlstatus = 0)

    开始

    选择@coltype,@cname

    FETCH NEXT col_crsr INTO @coltype,@cname

    结束

    关闭 col_crsr

    释放游标 col_crsr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多