Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Não é possível acessar tabelas temporárias de dentro de uma função


Você pode usar o tipo de tabela definido pelo usuário para resolver seu problema.

Você acabou de criar uma variável de tabela como
CREATE TYPE [dbo].[yourTypeName] AS TABLE(
    [columeName1] [int] NULL,
    [columeName2] [varchar](500) NULL,
    [columeName3] [varchar](1000) NULL
)
GO

e você pode declarar esta variável de tabela em sua função como
    CREATE FUNCTION [dbo].[yourFunctionName] 
( 
    @fnVariable1 INT ,
    @yourTypeNameVariable yourTypeName READONLY
) 
RETURNS VARCHAR(8000) 
AS 
BEGIN 

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

Em seu procedimento, você pode declarar seu tipo de tabela como
DECLARE @yourTypeNamevaribale AS yourTypeName 

E você pode inserir valores nesta tabela como
insert into @yourTypeNamevaribale (col,col,..)values(val,val,..)

passe isso para sua função como
dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

por favor, vá para este método, obrigado