将参数从存储过程传递到函数(在存储过程内)

时间:2011-08-03 11:48:43

标签: sql sql-server function stored-procedures parameters

我遇到了问题,我已经研究过Stackoverflow的答案而没有任何运气。我已经设法构建一个使用名为GetSubtree_relvalue的函数的存储过程。当函数的参数硬编码时,存储过程及其功能正常工作。但是现在我希望函数固有在执行时使用存储过程发送的参数。

当我用@attribute_id替换XX和USA和使用@Client替换USA时,它不会返回任何内容。到目前为止我调试了它,以便我可以断定该函数在运行时没有得到任何值。即使存储过程中的这些参数与我硬编码的值完全相同,也是如此。 (我在程序中选择了常规选择@client并返回美国。)

我是否错误地参数化了这个功能?我是否需要启动函数参数才能将其发送/传递给函数?如何获取函数到inhere参数?

我很高兴有关将参数从SP传递到函数的所有输入。

使用SQL Server 2008

由于

/丹尼尔


硬编码的功能值

Insert into att_value_lookup (t.attribute_ID, t.att_value)
Select
t.attribute_ID, t.att_value 
From
(Select attribute_id, att_value from relvalue
where attribute_id in (
            Select attribute_id from (
                        select attribute_id 
                        from dbo.GetSubtree_relvalue('XX','USA'))
 ) as t

参数化的函数值

Insert into att_value_lookup (t.attribute_ID, t.att_value)
Select
t.attribute_ID, t.att_value 
From
(Select attribute_id, att_value from relvalue
where attribute_id in (
            Select attribute_id from (
                        select attribute_id 
                        from dbo.GetSubtree_relvalue('@attribute_id','@client'))
 ) as t

2 个答案:

答案 0 :(得分:5)

删除引号!!

dbo.GetSubtree_relvalue('@attribute_id','@client')

应该是:

dbo.GetSubtree_relvalue(@attribute_id,@client)

你只需要传递像'XX'和'USA'这样的文字字符串值,而不是在传入变量时。您实际上是在传递包含变量名称的字符串:'@ attribute_id','@ client'而不是变量中包含的值。

你可以看看:

DECLARE @x varchar(10)
SET @x='wow wee!!'
print '@x'
print @x

答案 1 :(得分:3)

从参数周围删除引号。您当前正在传递恰好是参数名称的字符串,但不传递参数本身。

from dbo.GetSubtree_relvalue(@attribute_id,@client)