Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nie można uzyskać dostępu do tabel tymczasowych z poziomu funkcji

Możesz użyć typu tabeli zdefiniowanego przez użytkownika, aby rozwiązać swój problem.

Po prostu tworzysz zmienną tabeli, taką jak

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

i możesz zadeklarować tę zmienną tabeli w swojej funkcji, tak jak

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

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

W swojej procedurze możesz zadeklarować typ tabeli, taki jak

DECLARE @yourTypeNamevaribale AS yourTypeName 

I możesz wstawić wartości do tej tabeli, takie jak

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

przekaż to do swojej funkcji, np.

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

skorzystaj z tej metody, dziękuję



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server obcina zwracaną wartość XML

  2. porównywanie dwóch ciągów w SQL Server

  3. Najszybszy sposób na wyświetlenie listy wszystkich baz danych w SQL Server przy użyciu T-SQL

  4. Konwertuj obiekt SQL Server DateTime na BIGINT (takty .Net)

  5. Powtórz wiersze N ​​razy zgodnie z wartością kolumny