Передача параметров из хранимой процедуры в функцию (внутри хранимой процедуры) - PullRequest
2 голосов
/ 03 августа 2011

У меня проблема, и я исследовал Stackoverflow для ответов без какой-либо удачи.Мне удалось построить хранимую процедуру, в которой используется функция GetSubtree_relvalue.Хранимая процедура и ее функция работают очень хорошо, когда функция имеет жестко запрограммированные параметры.Но теперь я хочу, чтобы функция присваивала параметры, которые отправляются с помощью хранимой процедуры при ее выполнении.

Когда я заменяю XX и США на @attribute_id, а США на @Client, он ничего не возвращает.Я до сих пор отлаживал его, так что я могу сделать вывод, что функция не получает никаких значений при запуске.И это несмотря на то, что эти параметры в хранимой процедуре имеют точно такое же значение, как и то, которое я жестко запрограммировал.(Я проверил с помощью обычного select @client в процедуре, и он возвращает США.)

Я неправильно параметризовал функцию?Нужно ли инициировать параметр функции, чтобы иметь возможность отправить его / передать функции?Как получить функции для присваивания параметров?

Я был бы рад за весь ввод, касающийся передачи параметров от SP к функциям.

Использование SQL-сервера 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 ]

5 голосов
/ 03 августа 2011

удалить кавычки !!

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
3 голосов
/ 03 августа 2011

Удалить кавычки вокруг ваших параметров.В настоящее время вы передаете строки, которые являются именами параметров, но не передаете сами параметры.

from dbo.GetSubtree_relvalue(@attribute_id,@client)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...