2011-04-07 70 views
0
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 

在此,执行提取后,它应显示行,但它显示执行时间:0.0031秒。 有什么不对?为什么此Sybase提取语句不起作用?

回答

0

在SQL的大多数方言中,你会围绕FETCH获得一个循环以获得多行,并且还要指定数据将要到达的位置(将要读取哪些变量) d必须采取一些步骤才能显示数据。

+0

申报@coltype炭(60) DECLARE @cname炭(60) 声明@i诠释 选择@ I = 3 声明为SELECT col_crsr光标CNAME,从SYS.SYSCOLUMNS coltype其中TNAME = 'abmc_customer_user' 的CNAME 集光标的行20的更新col_crsr 开放col_crsr 而@i <5 开始 col_crsr读取到@ CNAME,@ coltype 选择@ CNAME,@ coltype 选择@ I = @ i + 1个的 端 靠近col_crsr DEALLOCATE光标col_crsr 喜乔纳森莱弗勒如果我使用循环像上面它显示光标它不会DISPLY furter行仅第一行。 plz帮助我,电话我什么我甲肝改变显示光标 – shankar 2011-04-07 15:14:54

+0

声明@coltype字符的所有行(60) 声明@cname CHAR(60) 声明@i诠释 选择I = 3 申报col_crsr光标从sys中选择cname,coltype。syscolumns中其中TNAME = 'abmc_customer_user' 的CNAME 集光标的行20的更新col_crsr 开放col_crsr 而@i <5 开始 col_crsr读取到@ CNAME,@ coltype 选择@ CNAME,@ coltype 选择@ I = @我+ 1 结束 关闭col_crsr 释放游标col_crsr 嗨乔纳森勒弗勒如果我使用循环像上面它只显示第一行游标它不会显示更多的行。 plz帮我和电话我什么我要改变显示光标的所有行 – shankar 2011-04-07 15:22:07

0

你可以尝试像这样循环通过游标以及读取值到您的变量,然后选择变量...

声明@coltype CHAR(60)

声明@cname CHAR( 60)

声明col_crsr光标为SELECT CNAME,从SYS.SYSCOLUMNS coltype其中TNAME = 'abmc_customer_user' 用于CNAME

组光标RO的更新具有保持col_crsr

开放col_crsr

col_crsr取INTO @ coltype,@ CNAME

WHILE WS 4(@@ sqlstatus = 0)

BEGIN

SELECT @ coltype,@ cname

FETCH NEXT col_crsr INTO @ coltype,@ cname

END

靠近col_crsr

DEALLOCATE光标col_crsr