I am using the below query to insert data from one table to another:
DECLARE @MATNO NVARCHAR(10), @GLOBALREV INT, @LOCALREP INT
SET @MATNO = '7AGME'
SET @GLOBALREV = 11
SET @LOCALREP = 1
INSERT INTO CIGARETTE_HEADER
VALUES
(SELECT *
FROM CIGARETTE_HEADER_BK1
WHERE MATERIAL_NUMBER = @MATNO
AND GLOBAL_REVISION = @GLOBALREV
AND LOCAL_REVISION = @LOCALREP)
The column in both the tables are same, but I am getting the following error:
Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'SELECT'.Msg 102, Level 15, State 1, Line 7
Incorrect syntax near ')'.
Can you please let me know the mistake here?
You don't need VALUES
keyword:
INSERT INTO CIGARETTE_HEADER
SELECT * FROM CIGARETTE_HEADER_BK1
WHERE MATERIAL_NUMBER = @MATNO AND
GLOBAL_REVISION = @GLOBALREV AND
LOCAL_REVISION = @LOCALREP
It is also preferable to explicitly cite every field name of both tables participating in the INSERT
statement.
You don't need to use the VALUES () notation. You only use this when you want to insert static values, and only one register. Example: INSERT INTO Table VALUES('value1',12, newid());
Also i recommend writing the name of the columns you plan to insert into, like this:
INSERT INTO Table
(String1, Number1, id)
VALUES('value1',12, newid());
In your case, do the same but only with the select:
DECLARE @MATNO NVARCHAR(10), @GLOBALREV INT, @LOCALREP INT;
SET @MATNO = '7AGME';
SET @GLOBALREV = 11;
SET @LOCALREP = 1;
INSERT INTO CIGARETTE_HEADER
(ColumnName1, ColumnName2)
SELECT ColumnNameInTable1, ColumnNameInTable2
FROM CIGARETTE_HEADER_BK1
WHERE MATERIAL_NUMBER = @MATNO
AND GLOBAL_REVISION = @GLOBALREV
AND LOCAL_REVISION = @LOCALREP);
To expand a bit on the issue.
VALUES() is actually a table constructor. When inserting rows into a table you can either use SELECT to fetch rows or VALUE constructor.
Even though INSERT INTO... VALUES is often used in examples to insert a row, you can use it to insert multiple rows, separating them with commas.
Eg. INSERT INTO table(col1, col2) VALUES (1, 2) , (3, 4) , (5, 6)
Would insert a set of 3 rows into your table.
VALUES can also be used to make derived tables, allowing some advanced data manipulation.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.