use*_*605 2 sql sql-server parameters stored-procedures function
我有一个问题,我已经研究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
Run Code Online (Sandbox Code Playgroud)
函数值已参数化
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
Run Code Online (Sandbox Code Playgroud)
删除引号!!
dbo.GetSubtree_relvalue('@attribute_id','@client')
Run Code Online (Sandbox Code Playgroud)
应该:
dbo.GetSubtree_relvalue(@attribute_id,@client)
Run Code Online (Sandbox Code Playgroud)
你传递像'XX'和'USA'这样的文字字符串值时只需要它们,而不是在传递变量时.您实际上是在传递包含变量名称的字符串:'@ attribute_id','@ client'而不是变量中包含的值.
你可以看看:
DECLARE @x varchar(10)
SET @x='wow wee!!'
print '@x'
print @x
Run Code Online (Sandbox Code Playgroud)