2009-10-21 202 views
0

下面的存儲過程不顯示SQL Server 2005的任何結果。我可以採取相同的說明,並將其作爲查詢運行,我得到的結果,我錯過了什麼。存儲過程不顯示結果

ALTER PROCEDURE [dbo].[usp_SubtractStops] 

@p NVARCHAR(1024) = '209 208 207 206 205 204 203 113 297 19 7 12 11 6 232 233 234 235 236 237 273 271 272 210 211 212 213 214 215 247', 
@q NVARCHAR(1024) = '209 208 207 206 205 204 203 113 297 19 7 12 11 6 232 233 234 235 236 237' 

--SET @p = '209 208 207 206 205 204 203 113 297 19 7 12 11 6 232 233 234 235 236 237 273 271 272 210 211 212 213 214 215 247' 
--SET @q = '209 208 207 206 205 204 203 113 297 19 7 12 11 6 232 233 234 235 236 237' 

AS 
BEGIN 

SET NOCOUNT ON; 

    SELECT StoppingPattern, 
     Replace(StoppingPattern, @p, @q) 
    FROM tLicTripStops 
    WHERE ',' + @p + ',' LIKE '%,' + StoppingPattern + ',%' 
    AND LastItemID = 247 

END 
+0

您可能會發現'CHARINDEX(t.stoppingpattern,@p)> 0'更易於閱讀:HTTP:// msdn.microsoft.com/en-us/library/ms186323%28SQL.90%29.aspx – 2009-10-21 05:03:34

+0

試試這個,並找回 謝謝 – Hari 2009-10-21 06:50:23

+0

什麼是停止模式在這裏? – 2009-11-25 19:49:18

回答

1

你打電話給usp_SubtractStops怎麼樣?你是否允許參數默認?

將工作:

  • usp_SubtractStops
  • usp_SubtractStops DEFAULT,DEFAULT

將不起作用:

  • usp_SubtractStops '默認', '默認'
  • usp_SubtractStops NULL ,NULL
  • usp_SubtractStops '', ''

其他的想法:

  • 列的數據類型匹配? (某處隱式轉換)

編輯,註釋後:

您需要更改生成的SQL。當我爲我的一個存儲過程執行操作時,它有一個「TODO」註釋來設置參數。你傳遞NULL,因爲它們沒有設置。因爲它是一個明確的NULL,所以它覆蓋了您在代碼中設置的默認值。

你唯一需要的SQL是這樣的,我已經註釋掉不需要的東西

DECLARE @RC int 
--DECLARE @p nvarchar(1024) 
--DECLARE @q nvarchar(1024) 

-- TODO: Set parameter values here. 

EXECUTE @RC = [MyDB].[dbo].[usp_SubtractStops] 
    -- @p 
    --,@q 
+0

謝謝 我試圖執行它使用SQL管理工作室,右鍵單擊存儲過程 - >腳本存儲過程爲 - >執行到,然後單擊執行圖標,我沒有得到任何結果。 但是然後我使用exec usp_SubtractStops執行存儲的proc,它工作。 我在第一種方法中做錯了什麼 – Hari 2009-10-21 05:29:19