存储过程不显示结果

时间:2009-10-21 04:46:48

标签: sql-server-2005 tsql stored-procedures

下面的存储过程不会显示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

1 个答案:

答案 0 :(得分:1)

你怎么称呼usp_SubtractStops?您是否允许参数默认?

会工作:

  • usp_SubtractStops
  • usp_SubtractStops DEFAULT,DEFAULT

无效:

  • usp_SubtractStops'DEFAULT','DEFAULT'
  • 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