Почему я должен использовать команду GO в sybase? - PullRequest
5 голосов
/ 14 ноября 2011

Почему я должен использовать GO при написании sql для sybase?В большинстве существующих sql моего проекта нет GO, но когда для создания таблицы генерируется DDL, например, приложение вставляет много операторов GO.

Благодаря ответам я понимаю, что GO аналогичен ; в других базах данных, поскольку люди любезно указали, что это разделитель.

Затем добавляется вопрос, * * * * * * * в sybase GO точно соответствует вводу ; вOracle?

Ответы [ 4 ]

11 голосов
/ 14 ноября 2011

Это пакетный разделитель. GO используется для указания движку обрабатывать все после слова GO как новую команду в пакете.

CREATE PROC usp_blah as ...
GO

CREATE some-otherproc as ...
GO

Без GO оптимизатор выдаст ошибку при втором CREATE утверждении

3 голосов
/ 15 ноября 2011

Сравнить:

    Do something
    GO
    Do something else
    Go

Кому:

    Do something
    Do something else

Если в первом примере во время «Сделать что-то» произошла ошибка, тогда «Сделать что-то еще» все равно будет запущено.Это не так во втором примере.И, как указал Стюарт, есть некоторые действия, которые требуют, чтобы они были первым оператором пакета, то есть вы должны поместить GO перед ними, если только это не первая строка вашего файла.

1 голос
/ 17 августа 2017

Так называемый разделитель идет не является частью синтаксиса языка SAP / Sybase Transact-SQL.

Обычно его считают разделителем пакетов, чтобы отделить группу операторов T-SQL от следующей.

Поскольку все пакетные сценарии SAP / Sybase выполняются с использованием собственного клиента командной строки isql, go is интерпретируется клиентом isql как сигнал для отправки всех команд T-SQL, введенных в его буфере, на сервер ASE через сервер ASE. Сервер-клиентское пользовательское сетевое соединение (go не отображается в сетевой трассировке, оно не отправляется на сервер).

Между прочим, isql распознает ход только в нижнем регистре и не обрабатывается пробелами.

1 голос
/ 15 ноября 2011

GO является разделителем SQL

Любое вхождение [gG] [oO] в тексте команды задания рассматривается как разделитель пакета go.

...