高手请进:调用这个存储过程的时候,老是说传的参数不对
CREATE PROCEDURE AA
@ItemNumber CHAR(15),
@SubCategory INT ,
@Manufacturer INT,
@Type CHAR (10),
@FromDate CHAR(25),
@ToDate CHAR(25)
AS
DECLARE @sql NVARCHAR(4000)
DECLARE @where NVARCHAR(500)
BEGIN
SET @sql =N'SELECT a.TransactionNumber,
                    a.Reason,
                    Item=a.ItemNumber,
				   Description=b.descrip,
				   Manufacturer=d.Manufactory,
				   Category=c.Description,
				   Type=a.Operation,
				   AttchFlag=ISNULL(e.AttachmentID,''0''),
				   a.LastEditUser,
                    a.LastEditDate
		  	   FROM dbo.IM_MapPriceLockLog a WITH (NOLOCK)
                LEFT JOIN dbo.arinvt01 b WITH (NOLOCK)
			   ON a.ItemNumber=b.item
                INNER JOIN dbo.ItemCatalog  c WITH (NOLOCK)
                ON a.ItemCategory=c.Catalog
                INNER JOIN dbo.manufactory d WITH (NOLOCK)
                ON a.Manufacturer=d.Code
                LEFT JOIN dbo.IM_IMAttachment e WITH (NOLOCK)
                ON a.TransactionNumber=e.ObjectNumber'
IF @ItemNumber<>''
BEGIN
SET @where=N' WHERE a.ItemNumber =@ItemNumber'
END
IF @SubCategory<>''
BEGIN
		IF @where IS NOT NULL
			BEGIN
				SET @where=@where+N' AND a.ItemCategory=@SubCategory AND a.Manufacturer=@Manufacturer'
			END
		ELSE  
			BEGIN
				SET @where=N' WHERE a.ItemCategory=@SubCategory AND a.Manufacturer=@Manufacturer'
			END
END
IF @Type<>'All'
BEGIN
		IF @where IS NOT NULL
			BEGIN
				SET @where=@where+N' AND a.Operation=@Type'
			END
		ELSE  
			BEGIN
				SET @where=N' WHERE a.Operation=@Type'
			END
END
IF @FromDate IS NOT NULL
BEGIN
	IF @where IS NOT NULL
		BEGIN
             SET @where=@where+ N' AND a.LastEditDate >='''  + RTRIM(@FromDate) + ' 00:00:00'''  
             SET @where=@where+ N' AND a.LastEditDate <='''  + RTRIM(@ToDate) + ' 23:59:59'''  
		END
	ELSE  
		BEGIN
			SET @where=N' WHERE a.LastEditDate >='''  + RTRIM(@FromDate) + ' 00:00:00'''
			SET @where=@where+N' AND a.LastEditDate <='''  + RTRIM(@ToDate) + ' 23:59:59'''  
		END	
END
SET @sql = @sql+@where
END
EXEC SP_EXECUTESQL @sql,N'@ItemNumber CHAR(15),
					      @SubCategory INT,
						  @Manufacturer INT,
					      @Type CHAR (10),
						  @FromDate DATETIME,
						  @ToDate DATETIME',
                           @ItemNumber,
					      @SubCategory,
						  @Manufacturer,
					      @Type,
						  @FromDate,
						  @ToDate
------解决方案--------------------传的参数明显过多.
------解决方案--------------------EXEC   SP_EXECUTESQL   @sql,N'@ItemNumber   CHAR(15),  
           @SubCategory   INT,  
   @Manufacturer   INT,  
           @Type   CHAR   (10),  
   @FromDate   DATETIME,  
   @ToDate   DATETIME',  
                                                   @ItemNumber,  
           @SubCategory,  
   @Manufacturer,  
           @Type,  
   @FromDate,  
   @ToDate
----
你的过程哪有这么多的参数呀
------解决方案--------------------1、第一点
@ItemNumber   CHAR(15),  
@SubCategory   INT   ,  
@Manufacturer   INT,  
@Type   CHAR   (10),  
@FromDate   CHAR(25),  
@ToDate   CHAR(25)  
这个存储过程,你调用的时候,只需要传以上这6个参数,如果在查询分析器里面能顺利执行的话,检查一下你调用存储过程的程序吧,看看什么地方少传了参数,或者多穿了参数