variable valores valor una tipo tabla resultado funciones con asignar sql stored-procedures dynamic-queries

sql - valores - Asignar el resultado de la función a una variable de tabla



variable tipo tabla sql server (3)

La función SQL Server (2000/2005) obtiene el nombre de la tabla y el nombre del campo como parámetros y devuelve los resultados de una consulta dinámica dentro de la función. Los resultados se deben asignar a una variable de Table que se utilizará más en un procedimiento almacenado. ¿Cómo lograr esto?

Recibo un error: "Solo las funciones y los procedimientos almacenados extendidos se pueden ejecutar desde una función".

Declare @Data as table (FieldValue varchar(100)) insert into @Data select * from MyFunction (''Person.Address'',''AddressID'') -- Function Alter function MyFunction ( @TableName varchar(100), @FieldName varchar(100) ) returns @GetData table ( FieldValue varchar(100) ) as begin Declare @SQL varchar(250) Set @SQL = ''Select ''+@FieldName+ '' from ''+ @TableName Exec sp_executesql @SQL return end


solo para cerrar el ciclo ...

aquí está la sintaxis para llamar a la función y poner esos resultados en una variable de tabla

pequeña versión de la solución @simons

esto funcionó en sql2012 y sql2014.

[no te olvides de cerrar la declaración de la tabla. Lo suficientemente fácil de hacer si tiene la tabla en una sola línea. ]

declare @t table(field1 nvarchar(100) ) insert @t select * from dbo.Cool_1Field_Function( ''parm1'' ,''parm2'') select * from @t


No estoy seguro de cómo funciona esto con las funciones, pero si tiene un Procedimiento almacenado que devuelve un conjunto de resultados, puede insertarlo en una variable de tabla utilizando las instrucciones INSERT EXEC.

INSERT @TableVariable EXEC spYourProcedure

Mientras los campos coincidan, eso funcionará. De lo contrario, puede usar:

INSERT @TableVariable (FieldInSp1, FieldInSp2) EXEC spYourProcedure

De esta manera puede pasar datos entre procedimientos almacenados. Consulte esta página en INSERTAR declaraciones EXEC para obtener información adicional.


No puede usar "exec" en una función definida por el usuario. Las UDF deben estar libres de efectos secundarios.