我有一个标量函数,它在表中查找当前日期(基于GETDATE())并返回单个值。该函数接受三个参数:{MonthOffset},{return_field}和{CompanyId}。 {return field}是一个VARCHAR(2)值,用于指定要返回的列值 - 即,对于ending_date为'E',对于beginning_date为'B',...
如果我将该功能称为:
SELECT [dbo].[HCS_fn_FiscalPeriodYear](-1, 'B', 'ABCDEF')
我正确地返回了begin_date。
如果我将该功能称为:
DECLARE @CompanyID VARCHAR(12)
SET @CompanyID = 'ABCDEF'
SELECT [dbo].[HCS_fn_FiscalPeriodYear](-1, 'B', '@CompanyID')
我从函数0得到一个返回值,它是函数中的错误陷阱值。
为什么 NOT 能够将变量值传递给函数并获得正确的回报?提前谢谢......
答案 0 :(得分:2)
看起来您将变量置于单引号中会出现问题,因此该函数实际上是一个'@CompanyID'而不是'ABCDEF'的字符串。
答案 1 :(得分:0)
将内容放在单引号中会使其成为字符串。这是您应该传递参数的方式
DECLARE @CompanyID VARCHAR(12)
SET @CompanyID = 'ABCDEF'
SELECT [dbo].[HCS_fn_FiscalPeriodYear](-1, 'B', @CompanyID)