2016-02-26 14 views
1

在SQL Server中(我相信2008)我試圖創建一個函數,用分隔符分割字符串,然後檢查傳入的值是否等於查詢中找到的值。如果是,那麼該函數返回true(只要它找到一個),否則返回false。函數返回數據到客戶端錯誤

出於某種原因,我得到以下錯誤似乎沒有道理。我認爲這是我覺得應該有一個解決這個問題的方法。我對SQL Server語法比較陌生,所以不勝感激。這裏是它指向的錯誤和代碼...

選擇包含在函數中的語句不能將數據返回給客戶端。

--Inside Function 
SELECT id FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start)) 
    IF @@ROWCOUNT > 0 
     RETURN 1; 

回答

3

錯誤是因爲您選擇了ID。

你只需要檢查它是否存在。

例如,您不需要選擇ID,您可以選擇1 ...對於存在檢查沒有區別。

IF EXISTS (SELECT 1 FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start))) 
    RETURN 1 
ELSE 
    RETURN 0 
3

鬆動的選擇返回一個結果,你不能返回從功能,只能從存儲過程。

重寫以從該結果集中選擇計數並將其與0進行比較。

IF 0<(SELECT COUNT(*) FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start))) 
    RETURN 1; 
+0

完美,不敢相信我沒有想到這一點。 – Sh4d0wsPlyr

+1

@ Sh4d0wsPlyr我的回覆很快,JiggsJedi的查詢更好一些,EXISTS回報更快。 –