#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