2009-10-21 59 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