Asignar el resultado de la function a una variable de tabla

La function SQL Server (2000/2005) obtiene el nombre de la tabla y el nombre del campo como parameters y devuelve los resultados de una consulta dinámica dentro de la function. 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 function".

 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 

No estoy seguro de cómo funciona esto con las funciones, pero si tiene un Procedimiento almacenado que devuelve un set de resultados, puede insertlo 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 get información adicional.

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

solo para cerrar el ciclo …

aquí está la syntax para llamar a la function 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 statement 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 
Intereting Posts