sql >> Base de Datos >  >> RDS >> Sqlserver

No se puede acceder a las tablas temporales desde dentro de una función

Puede usar el tipo de tabla definido por el usuario para resolver su problema.

Simplemente crea una variable de tabla como

CREATE TYPE [dbo].[yourTypeName] AS TABLE(
    [columeName1] [int] NULL,
    [columeName2] [varchar](500) NULL,
    [columeName3] [varchar](1000) NULL
)
GO

y puede declarar esta variable de tabla en su función como

    CREATE FUNCTION [dbo].[yourFunctionName] 
( 
    @fnVariable1 INT ,
    @yourTypeNameVariable yourTypeName READONLY
) 
RETURNS VARCHAR(8000) 
AS 
BEGIN 

    SELECT .................
        FROM @yourTypeNameVariable 
        WHERE ........
    RETURN @r 
END 

En su procedimiento, puede declarar su tipo de tabla como

DECLARE @yourTypeNamevaribale AS yourTypeName 

Y puede insertar valores en esta tabla como

insert into @yourTypeNamevaribale (col,col,..)values(val,val,..)

pasa esto a tu función como

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

por favor vaya por este método, gracias