我遇到了问题,我已经研究过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
答案 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)