Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Impossibile accedere alle tabelle temporanee dall'interno di una funzione

Puoi utilizzare il tipo di tabella definito dall'utente per risolvere il tuo problema.

Devi solo creare una variabile di tabella come

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

e puoi dichiarare questa variabile di tabella nella tua funzione come

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

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

Sulla tua procedura puoi dichiarare il tuo tipo di tabella come

DECLARE @yourTypeNamevaribale AS yourTypeName 

E puoi inserire valori in questa tabella come

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

passalo alla tua funzione come

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

per favore scegli questo metodo, grazie