sql >> Databáze >  >> RDS >> Sqlserver

Nelze přistupovat k dočasným tabulkám z funkce

K vyřešení vašeho problému můžete použít uživatelsky definovaný typ tabulky.

Stačí vytvořit proměnnou tabulky jako

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

a tuto proměnnou tabulky můžete deklarovat ve své funkci jako

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

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

Ve své proceduře můžete deklarovat typ tabulky jako

DECLARE @yourTypeNamevaribale AS yourTypeName 

A do této tabulky můžete vkládat hodnoty jako

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

předejte to své funkci jako

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

přejděte prosím na tuto metodu, děkuji



  1. Dopad na aplikaci při migraci ze serveru SQL 2005 na 2008

  2. Chyba syntaxe MySQL pomocí příkazu LIMIT s připraveným příkazem v Javě

  3. Přístup k datům pomocí vztahů Laravel

  4. Aktualizace MySQL Incremented (No Auto-Incremented) Sloupce Values