Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Impossible d'accéder aux tables temporaires à partir d'une fonction

Vous pouvez utiliser le type de tableau défini par l'utilisateur pour résoudre votre problème.

Vous venez de créer une variable de table comme

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

et vous pouvez déclarer cette variable de table dans votre fonction comme

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

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

Sur votre procédure, vous pouvez déclarer votre type de table comme

DECLARE @yourTypeNamevaribale AS yourTypeName 

Et vous pouvez insérer des valeurs dans ce tableau comme

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

passez ceci à votre fonction comme

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

s'il vous plaît, optez pour cette méthode, merci