gpt4 book ai didi

sql - 将参数从存储过程传递到函数(在存储过程中)

转载 作者:行者123 更新时间:2023-12-02 07:10:08 25 4
gpt4 key购买 nike

我有一个问题,我已经研究了 Stackoverflow 以寻找答案,但没有任何运气。我设法构建了一个存储过程,其中使用了一个名为 GetSubtree_relvalue 的函数。当函数的参数被硬编码时,存储过程及其函数工作得很好。但是现在我希望函数在执行时继承与存储过程一起发送的参数。

当我将 XX 和 USA 替换为 @attribute_id 并将 USA 替换为 @Client 时,它不会返回任何内容。到目前为止,我已经对它进行了调试,因此我可以得出结论,该函数在运行时不会获得任何值。这一点,即使存储过程中的这些参数与我硬编码的参数具有完全相同的值。 (我在程序中检查了一个常规的选择@client,它返回了美国。)

我是否错误地参数化了函数?我是否需要启动函数参数才能将其发送/传递给函数?如何让函数继承参数?

我很高兴收到所有关于将参数从 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

最佳答案

去掉引号!!

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

关于sql - 将参数从存储过程传递到函数(在存储过程中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com