Solución:
SELECT ... INTO ...
solo funciona si la tabla especificada en la cláusula INTO no existe; de lo contrario, debe usar:
INSERT INTO dbo.TABLETWO
SELECT col1, col2
FROM dbo.TABLEONE
WHERE col3 LIKE @search_key
Esto supone que solo hay dos columnas en dbo.TABLETWO; de lo contrario, debe especificar las columnas:
INSERT INTO dbo.TABLETWO
(col1, col2)
SELECT col1, col2
FROM dbo.TABLEONE
WHERE col3 LIKE @search_key
Hay dos formas diferentes de implementar la inserción de datos de una tabla a otra.
Para tabla existente – INSERT INTO SELECT
Este método se utiliza cuando la tabla ya se creó en la base de datos anteriormente y los datos se insertarán en esta tabla desde otra tabla. Si las columnas enumeradas en la cláusula de inserción y la cláusula de selección son las mismas, no es necesario que las enumeren. Es una buena práctica enumerarlos siempre por motivos de legibilidad y escalabilidad.
----Create testable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
Para tabla no existente – SELECT INTO
Este método se utiliza cuando la tabla no se creó antes y debe crearse cuando los datos de una tabla deben insertarse en la tabla recién creada desde otra tabla. La nueva tabla se crea con los mismos tipos de datos que las columnas seleccionadas.
----Create a new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
Ref 1 2
Funcionaría como se indica a continuación:
insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration
from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & ""