簡體   English   中英

將參數從存儲過程傳遞到函數(在存儲過程內)

[英]Passing parameters from Stored Procedure to Function (inside Stored Procedure)

我有一個問題,我已經研究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

刪除引號!!

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

從參數周圍刪除引號。 您當前正在傳遞恰好是參數名稱的字符串,但不傳遞參數本身。

from dbo.GetSubtree_relvalue(@attribute_id,@client)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM