Почему этот оператор Sybase fetch не работает?

#sybase

#sybase

Вопрос:

 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 сек.
Что не так?

Ответ №1:

В большинстве диалектов SQL у вас был бы цикл выборки для получения нескольких строк, и вы также указали бы, куда должны поступать данные (в какие переменные они должны быть извлечены), и вам пришлось бы предпринять некоторые шаги для отображения данных.

Комментарии:

1. объявляем @coltype char(60) объявляем @cname char(60) объявляем @i int select @i=3 объявляем курсор col_crsr для ВЫБОРА cname,coltype из sys.syscolumns, где tname = ‘abmc_customer_user’ для обновления cname устанавливаем строки курсора 20 для col_crsr открываем col_crsr, в то время как @i<5 начинаем извлекать col_crsr в @cname,@coltype выбираем @cname,@coltype выбираем @i=@i 1 end закрыть col_crsr освободить курсор col_crsr привет, Джонатан Леффлер, если я использую цикл, подобный приведенному выше, он показывает только первую строку курсора, это не приведет к удалению дополнительных строк. пожалуйста, помогите мне и скажите, что мне нужно изменить, чтобы отобразить все строки курсора

2. объявляем @coltype char(60) объявляем @cname char(60) объявляем @i int select @i=3 объявляем курсор col_crsr для ВЫБОРА cname,coltype из sys.syscolumns, где tname = ‘abmc_customer_user’ для обновления cname устанавливаем строки курсора 20 для col_crsr открываем col_crsr, в то время как @i<5 начинаем извлекать col_crsr в @cname,@coltype выбираем @cname,@coltype выбираем @i=@i 1 end закрыть col_crsr освободить курсор col_crsr привет, Джонатан Леффлер, если я использую цикл, подобный приведенному выше, он показывает только первую строку курсора, это не приведет к удалению дополнительных строк. пожалуйста, помогите мне и скажите, что мне нужно изменить, чтобы отобразить все строки курсора

Ответ №2:

Вы могли бы попробовать это следующим образом: провести курсором по циклу и получить значения в ваших переменных, а затем ВЫБРАТЬ переменные…

объявить @coltype char(60)

объявить @cname char(60)

объявите курсор col_crsr для ВЫБОРА cname, введите coltype из sys.syscolumns, где tname = ‘abmc_customer_user’ для обновления cname

установите строки курсора 4 для col_crsr

откройте col_crsr С ПОМОЩЬЮ HOLD

извлеките col_crsr В @coltype,@cname

WHILE (@@sqlstatus = 0)

НАЧАТЬ

ВЫБЕРИТЕ @coltype,@cname

ИЗВЛЕКИТЕ СЛЕДУЮЩИЙ col_crsr В @coltype,@cname

ЗАВЕРШЕНИЕ

закрыть col_crsr

освободить курсор col_crsr