在SQL2008中将变量传递给标量函数

时间:2015-05-06 14:20:00

标签: sql-server-2008 function tsql variables

我有一个标量函数,它在表中查找当前日期(基于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 能够将变量值传递给函数并获得正确的回报?提前谢谢......

2 个答案:

答案 0 :(得分:2)

看起来您将变量置于单引号中会出现问题,因此该函数实际上是一个'@CompanyID'而不是'ABCDEF'的字符串。

答案 1 :(得分:0)

将内容放在单引号中会使其成为字符串。这是您应该传递参数的方式

DECLARE @CompanyID VARCHAR(12)
SET @CompanyID = 'ABCDEF'

SELECT [dbo].[HCS_fn_FiscalPeriodYear](-1, 'B', @CompanyID)