`go` в хранимых процедурах Sybase 16 - PullRequest
0 голосов
/ 16 июня 2020

У меня есть следующая хранимая процедура в Sybase 16,

create or replace procedure ... as
...
drop table tempdb..koppelingen
go
declare 
    vre_cursor cursor  for
...

Затем я вижу: declare cursor must be the only statement in a query batch.

Если я пропущу go, я могу создать хранимую процедуру .

Если я выполняю код хранимой процедуры вручную, выбирая и выполняя, я должен использовать go.

Так что же происходит в хранимой процедуре? Он сам вставляет go? Но тогда я не понимаю сообщение об ошибке declare cursor выше.

1 Ответ

1 голос
/ 16 июня 2020

go - это не команда ASE.

go - это команда на стороне клиента, которая сообщает клиентскому приложению (например, isql), что пакет SQL теперь можно отправить в ASE. В случае create or replace procedure ... go сообщает клиентскому приложению (например, isql), что вы завершили сохраненное определение pro c, и теперь оно может быть отправлено в ASE для анализа и компиляции.

declare cursor должно быть в пакете SQL отдельно (ie, declare ...\ngo), если запускается из клиентского приложения (например, isql); внутри сохраненного pro c команда declare cursor может быть сгруппирована с другими последующими командами (например, open, fetch).

...