sql >> Databasteknik >  >> RDS >> Sqlserver

Kan inte komma åt tillfälliga tabeller från en funktion

Du kan använda användardefinierad tabelltyp för att lösa ditt problem.

Du skapar bara en tabellvariabel som

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

och du kan deklarera denna tabellvariabel i din funktion som

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

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

På din procedur kan du deklarera din tabelltyp som

DECLARE @yourTypeNamevaribale AS yourTypeName 

Och du kan infoga värden i den här tabellen som

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

skicka detta till din funktion som

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

snälla använd den här metoden, tack



  1. Skapa en vy med ORDER BY-satsen

  2. Gick nyligen till en intervju. Kan inte svara på detta, kan du hjälpa mig

  3. Hur skapar jag permalänkar som är databasdrivna?

  4. Varför ger denna PostgreSQL-transaktion VARNING:det pågår ingen transaktion