我的StoredProcedure就是这样
USE [Workcamps]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ph_TshirtReport]
@CampCode nvarchar(20) = NULL,
@strAddtlCriteria VARCHAR(150) = ''
AS
DECLARE @strSQL VARCHAR(900)
SET @strSQL = 'select distinct [VolID] ,[VolFName] FROM [vTShirtBase] WHERE @CampCode IS NULL OR CampCode=@CampCode'
IF Len(@strAddtlCriteria) > 0
SET @strSQL = @strSQL + ' and ' + @strAddtlCriteria
exec (@strSQL)
我这样执行它
USE [Workcamps]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[ph_TshirtReport]
@CampCode = N'14CA11',
@strAddtlCriteria = N'GroupStaff = 0 And TSWithGS = 0 And StaffAtTraining = 0 And MinJobType <> S And Setup = 0'
SELECT 'Return Value' = @return_value
GO
一切对我来说都还好。但这会引发错误
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@CampCode".
我不知道为什么会这样,有人可以指出我做错了什么吗?
您需要更改SET @strSQL代码。设置如下:
SET @strSQL = 'select distinct [VolID] ,[VolFName] FROM [vTShirtBase] WHERE ' + @CampCode + ' IS NULL OR CampCode=' + @CampCode
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句