INSERT INTO @TABLE EXEC @query con SQL Server 2000
¿Es cierto que en SQL Server 2000 no se puede insertar en una variable de tabla mediante exec?
Probé este script y me salió un mensaje de error EXECUTE no puede ser usado como fuente cuando se inserta en una variable de tabla.
declare @tmp TABLE (code varchar(50), mount money)
DECLARE @q nvarchar(4000)
SET @q = 'SELECT coa_code, amount FROM T_Ledger_detail'
INSERT INTO @tmp (code, mount)
EXEC sp_executesql (@q)
SELECT * from @tmp
Si eso es cierto, ¿qué debo hacer?
37
3
N.B. - esta pregunta y respuesta se refieren a la versión 2000 de SQL Server. En versiones posteriores, la restricción de
INSERT INTO @table_variable ... EXEC ...
fueron levantadas y por lo tanto no se aplica para esas versiones posteriores.Tendrá que cambiar a una tabla temporal:
De la documentación:
Una variable de tabla se comporta como una variable local. Tiene un ámbito bien definido, que es la función, procedimiento almacenado o lote en el que se declara.
Dentro de su ámbito, una variable de tabla puede utilizarse como una tabla normal. Puede aplicarse en cualquier lugar donde se utilice una tabla o una expresión de tabla en las sentencias SELECT, INSERT, UPDATE y DELETE. Sin embargo, la tabla no puede utilizarse en las siguientes sentencias:
La documentación es engañosa; Tengo el siguiente código ejecutándose en producción
Si quieres en consulta dinámica