首页 > 解决方案 > 来自输入列的 SQL Server 函数中的表变量

问题描述

我想创建一个函数,该函数根据其他三列的输入返回一列。由于函数中不允许使用临时表,是否可以从三个输入列创建表变量?

CREATE FUNCTION dbo.convert_value(
    @CustomerID VARCHAR(MAX),
    @CustomerValue VARCHAR(MAX),
    @CustomerDescription VARCHAR(MAX)
)
RETURNS FLOAT
AS BEGIN

DECLARE @CustomerTable TABLE (
    UniquePatientUID VARCHAR(MAX),
    ResultValue VARCHAR(MAX),
    PracticeDescription VARCHAR(MAX)
);

-- How can I insert @UniquePatientUID, @ResultValue and @PracticeDescription into @CustomerTable

END

这个问题的上下文是我有一个使用临时表和许多UPDATEALTER TABLE语句的 SQL 脚本,我需要将其转换为函数。该脚本从提到的三列开始,并添加第四列,Converted_Value,这是用数百行代码和操作临时表计算的。这里有希望吗?

标签: sqlsql-servertsql

解决方案


表变量插入实际上与常规插入没有什么不同。不要使用临时表。您也可以更改表,或者仅使用第四列最初声明它并允许它为 NULL。

INSERT INTO @CustomerTable (UniquePatientUID, ResultValue, PracticeDescription)
VALUES(@CustomerID, @CustomerValue, @CustomerDescription);

不要忘记返回 FLOAT。


推荐阅读