Что эквивалентно «go» в MySQL? - PullRequest
20 голосов
/ 18 апреля 2009

В TSQL я могу заявить:

insert into myTable (ID) values (5)
GO
select * from myTable

В MySQL я не могу написать тот же запрос.

Как правильно написать этот запрос в MySQL?

Ответы [ 5 ]

40 голосов
/ 18 апреля 2009

Точка с запятой в конце строки.

INSERT INTO myTable (ID) values (5);
13 голосов
/ 18 апреля 2009

Точка с запятой является разделителем по умолчанию. Однако вы можете переопределить его так, как вам нужно, с помощью ключевого слова DELIMITER. Из руководства MySQL:

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END;
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)

Конечно, это не ограничивается определениями хранимых процедур.

9 голосов
/ 18 апреля 2009

Просто, просто;

так что попробуйте

insert into myTable(ID) values (5);
select * from myTable;
7 голосов
/ 19 июня 2010

Я думаю, что проблема в том, что GO - это терминатор пакета, а не терминатор оператора. После явной установки транзакций я получил этот код для выполнения, не сказав мне, что процедура уже существует. Без операторов транзакции я получаю сообщение об ошибке, что процедура уже существует.

начало транзакции; удалить процедуру, если существует usp_test; совершить; начать транзакцию; СОЗДАТЬ ПРОЦЕДУРУ usp_test () SELECT * из книг; совершить; вызовите usp_test ();

4 голосов
/ 18 апреля 2009

Используйте точку с запятой (;). Это отделит ваши заявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...