我第一次使用表值作为SQL Server 2008中函数的参数。以下代码产生此错误:SQL Server 2008表变量错误:必须声明标量变量“@RESULT”
必须声明标量变量“@RESULT”。
为什么?我在函数的第一行声明它!
ALTER FUNCTION f_Get_Total_Amount_Due(
@CUSTOMER_LIST [tpCSFM_CUSTOMER_SET_FOR_MONEY] READONLY
)
RETURNS [tpCSFM_CUSTOMER_SET_FOR_MONEY]
AS
BEGIN
--Prepare the return value, start with initial customer list
DECLARE @RESULT AS [tpCSFM_CUSTOMER_SET_FOR_MONEY]
INSERT INTO @RESULT SELECT * FROM @CUSTOMER_LIST
--Todo: populate with real values
UPDATE @RESULT SET tpCSAM_MONEY_VALUE = 100
--return total amounts as currency
RETURN @RESULT
END
什么是'[tpCSFM_CUSTOMER_SET_FOR_MONEY]'? – SLaks 2010-03-23 00:27:46
我已经在数据库中创建了一个自定义类型 – Trindaz 2010-03-23 04:54:41
您明白自定义类型通常是一个坏主意?他们可以导致巨大的维修问题?我会尽量避免使用它们!从联机书籍: “要修改用户定义类型,必须使用DROP TYPE语句删除该类型,然后重新创建它。” 这意味着您需要首先将使用该类型的所有数据更改为另一种类型,然后删除该类型,然后创建新类型,然后将所有要将该数据类型恢复为新数据的字段更改。这是一个维护噩梦,我不知道谁管理大型数据库将允许使用自定义类型。 – HLGEM 2010-03-24 17:19:29