Синтаксис "избранная вершина (@var)..." только работает в SQL-СЕРВЕРЕ 2005 +. Для SQL 2000 можно сделать:
set rowcount @top
select * from sometable
set rowcount 0
Hope это помогает
Oisin.
(отредактированный для замены @@ rowcount rowcount - благодарит augustlights)
Скорее всего, это означает, что открытый не завершился ошибкой .
Когда Perl открывает файл, он проверяет, является ли файл TTY (чтобы он мог ответить на оператор -T $ fh
filetest), выдача TCGETS
ioctl против него. Если файл является обычным файлом, а не tty, ioctl завершается ошибкой и устанавливает значение errno равным ENOTTY
(строковое значение: «Несоответствующий ioctl для устройства»). Как сказано в ysth, наиболее распространенной причиной появления неожиданного значения в $!
является проверка его, когда оно недействительно, то есть где угодно другое , чем сразу после сбоя системного вызова, поэтому критически важно проверять коды результатов ваших операций.
Если open
действительно вернул вам false, и вы нашли ENOTTY
в $!
, то я бы посчитал это небольшой ошибкой (дающей бесполезное значение of $!
), но мне также было бы очень любопытно, как это произошло. Код и / или выход фермы будут отличными.
«Несоответствующий ioctl для устройства» - это строка ошибки для ошибки ENOTTY. Раньше он запускался в первую очередь при попытках настроить свойства терминала (например, режим эха) для дескриптора файла, который не был терминалом (а, скажем, обычным файлом), следовательно, ENOTTY. В более общем смысле, он запускается при выполнении ioctl на устройстве, которое не поддерживает этот ioctl, отсюда и строка с ошибкой.
Чтобы узнать, какой ioctl не работает и на каком дескрипторе файла, запустите сценарий под strace / ферма. Вы узнаете ENOTTY, а затем фактическую печать сообщения об ошибке. Затем выясните, какой номер файла использовался и какой вызов open () вернул этот номер файла.
«файлы» в системах типов * nix - это очень абстрактное понятие.
Они могут быть областями на диске, организованными файловой системой, но они также могут быть сетевым подключением, небольшим количеством разделяемой памяти, вывод буфера из другого процесса,
Странные ошибки, такие как «несоответствующий ioctl для устройства», обычно являются результатом проверки $! в какой-то момент, кроме как сразу после сбоя системного вызова. Если бы вы показали свой код, держу пари, что кто-то быстро укажет на вашу ошибку.
Момент эврики!
У меня раньше была эта ошибка.
Вы вызывали отладчик perl с чем-то вроде: -
perl -d yourprog.pl > log.txt
Если это так, то отладка perl пытается запросить и, возможно, сбросить ширину терминала. Когда stdout не является терминалом, это не срабатывает с сообщением IOCTL.
В качестве альтернативы ваш сеанс отладки может зависнуть навсегда, потому что вы не видите приглашения для инструкций.