Я хочу использовать серию вставки непосредственно в следующей вставке.Ошибка синтаксиса в DECLARE
на основе Help with T-SQL script: Insert record, then use identity of that insert on another statement? я выполнить следующий SQL-запрос:
DECLARE @Id1 BIGINT
DECLARE @Id2 BIGINT
INSERT INTO doses (CPS, ground, total) VALUES (10, 10, 10)
SET @Id1 = SELECT SCOPE_IDENTITY()
INSERT INTO places (x, y, z, speed) VALUES (10, 10, 10, 10)
SET @Id2 = SELECT SCOPE_IDENTITY()
INSERT INTO measurements (time, place, note, dose, id_dataset) VALUES ('Test', @Id1, 'test', @Id2, 17)
Это дает мне ошибку синтаксиса, и я не могу найти ничего плохого с моей DECLARE.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @Id1 BIGINT
DECLARE @Id2 BIGINT INSERT INTO doses (CPS, ground, total)' at line 1
Похоже, что DECLARE в MySQL может использоваться только в BEGIN..END. http://dev.mysql.com/doc/refman/5.0/en/declare.html
Также SCOPE_IDENTITY заменяет LAST_INSERT_ID().
Это мой новый запрос:
BEGIN
DECLARE @Id1 BIGINT;
DECLARE @Id2 BIGINT;
INSERT INTO doses (CPS, ground, total) VALUES (10, 10, 10);
SET @Id1 = (SELECT LAST_INSERT_ID());
INSERT INTO places (x, y, z, speed) VALUES (10, 10, 10, 10);
SET @Id2 = (SELECT LAST_INSERT_ID());
INSERT INTO measurements (time, place, note, dose, id_dataset);
VALUES ('Test', @Id1, 'test', @Id2, 17);
END
Но я все еще получаю ту же ошибку.
Нет необходимости выбирать из области действия, ее выход, просто удалить SELECT - 'SET @ Id1 = SCOPE_IDENTITY()' –
Можете ли вы разместить полное сообщение об ошибке и версию SQL Server, которую используете? – DrCopyPaste
Я добавил его к вопросу. – Milan