下面的存储过程不会显示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 :(得分:1)
你怎么称呼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