sql >> Database >  >> RDS >> Sqlserver

Geen toegang tot tijdelijke tabellen vanuit een functie

U kunt een door de gebruiker gedefinieerd tabeltype gebruiken om uw probleem op te lossen.

U maakt gewoon een tabelvariabele zoals

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

en je kunt deze tabelvariabele declareren in je functie zoals

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

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

Op uw procedure kunt u uw tafeltype declareren zoals

DECLARE @yourTypeNamevaribale AS yourTypeName 

En u kunt waarden in deze tabel invoegen zoals

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

geef dit door aan je functie zoals

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

ga alsjeblieft voor deze methode, bedankt



  1. 4 manieren om NULL te vervangen door een andere waarde in MySQL

  2. Hoe het tijdgedeelte van een datetime-waarde (SQL Server) te verwijderen?

  3. SQL Meerdere tabellen tegelijk maken

  4. Loop door MySQL links doe mee in php vs. 2 aparte queries