Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Няма достъп до временни таблици от функция

Можете да използвате дефиниран от потребителя тип таблица, за да разрешите проблема си.

Просто създавате таблична променлива като

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

и можете да декларирате тази променлива на таблицата във вашата функция като

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

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

Във вашата процедура можете да декларирате вашия тип таблица като

DECLARE @yourTypeNamevaribale AS yourTypeName 

И можете да вмъкнете стойности в тази таблица като

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

предайте това на вашата функция като

dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )

моля, изберете този метод, благодаря



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. кога ще се актуализира изчислената колона?

  2. SQL Server 2008 не може да премахне ограничението

  3. 5 начина за намиране на редове, които съдържат главни букви в SQL Server

  4. Филтриране по опции OFFSET-FETCH в заявка за избор - SQL Server / TSQL урок, част 118

  5. Избройте всички бази данни от свързан сървър в SQL Server (T-SQL примери)