2012-08-29 71 views
0

我寫了一個返回商品的價格給它的名稱和類別此標量函數,但是當我從一個select語句它總是返回null調用它,這就是功能定標器功能總是返回null

CREATE FUNCTION [dbo].[GetPrice] (@ItemName nvarchar(250), @ItemCatagory nvarchar(250)) 

RETURNS float 

As 

BEGIN 
     Return (select top 1 Price from Stock where [email protected] and [email protected]) 
END 

這是select語句

Select SNo,ItemName,Category,dbo.GetPrice(ItemName,Category) From Items 
+0

您是否檢查單獨返回的查詢? – kyooryu

+0

沒有'order by'的'top 1'不是確定性的。如果有多個,應該返回什麼樣的價格?雖然看起來好像這個函數應該返回一些東西,如果實際上'WHERE Item = @ ItemName和Store = @ ItemCatagory'確實匹配的東西。出於性能方面的原因,我不會爲此使用標量UDF。 –

+0

您是否嘗試通過證明正確的值來執行select top 1查詢? – AnandPhadke

回答

0

我懷疑這樣的代碼:

[email protected] 

在大多數數據庫中,稱爲「Store」的東西不會與名爲「Category」的東西進行比較。也許這應該是:

Category = @ItemCategory 
+0

你是對的,但在這個特定的數據庫存儲和類別實際上是相同的東西(我知道愚蠢的設計),但它的方式,關於[前1]我試圖獲得物品的價格,物品存儲在「Items」表中,它的價格在「Stock」表中,問題在於沒有鏈接兩個表,我只是試圖避免在結果中獲取多行,正如我之前所說的那樣,愚蠢的DB設計 –