CREATE PROCEDURE dbo.test
    @XM_BH VARCHAR(127),
  @ZCB_FLAG VARCHAR(15),
  @ZCB_LYFS VARCHAR(15),
  @ret  int output
ASdeclare @sql varchar(1000)
set @sql=N' select @ret = isnull(sum(isnull(ZCB_DJ,0)*isnull(ZCB_SL,0)),0)'+ 
         N' from GC_ZCB '+
         N' where  ZCB_BH='''+@XM_BH +N'''and '+
         N'        ZCB_LYFS in ('''+@ZCB_FLAG+N''') and'+ 
         N'        ZCB_FLAG in ('''+ZCB_LYFS)+N''')'
exec sp_executesql @sql,N'@ret int output',@ret output
go

解决方案 »

  1.   

    多了个括号:CREATE PROCEDURE dbo.test
        @XM_BH VARCHAR(127),
      @ZCB_FLAG VARCHAR(15),
      @ZCB_LYFS VARCHAR(15),
      @ret  int output
    ASdeclare @sql varchar(1000)
    set @sql=N' select @ret = isnull(sum(isnull(ZCB_DJ,0)*isnull(ZCB_SL,0)),0)'+ 
             N' from GC_ZCB '+
             N' where  ZCB_BH='''+@XM_BH +N'''and '+
             N'        ZCB_LYFS in ('''+@ZCB_FLAG+N''') and'+ 
             N'        ZCB_FLAG in ('''+ZCB_LYFS+N''')'
    exec sp_executesql @sql,N'@ret int output',@ret output
    go
      

  2.   

    --try
    CREATE PROCEDURE dbo.test
        @XM_BH VARCHAR(127),
      @ZCB_FLAG VARCHAR(15),
      @ZCB_LYFS VARCHAR(15),
      @ret  int output
    ASselect @ret = isnull(sum(isnull(ZCB_DJ,0)*isnull(ZCB_SL,0)),0) from GC_ZCB where ZCB_BH=@XM_BH and ZCB_LYFS in (@ZCB_FLAG) and ZCB_FLAG in (@ZCB_LYFS)
      

  3.   

    --或者楼上的
    CREATE PROCEDURE dbo.test
        @XM_BH VARCHAR(127),
      @ZCB_FLAG VARCHAR(15),
      @ZCB_LYFS VARCHAR(15),
      @ret  int output
    ASdeclare @sql varchar(1000)
    set @sql=N' select @ret = isnull(sum(isnull(ZCB_DJ,0)*isnull(ZCB_SL,0)),0)'+ 
             N' from GC_ZCB '+
             N' where  ZCB_BH='''+@XM_BH +N'''and '+
             N'        ZCB_LYFS in ('''+@ZCB_FLAG+N''') and'+ 
             N'        ZCB_FLAG in ('''+@ZCB_LYFS+N''')'        --加个变量@ZCB_LYFS
    exec sp_executesql @sql,N'@ret int output',@ret output
    go
      

  4.   

    --或者
    --主材费
    CREATE PROCEDURE dbo.test
        @XM_BH VARCHAR(127),
      @ZCB_FLAG VARCHAR(15),
      @ZCB_LYFS VARCHAR(15),
      @ret  int output
    ASselect @ret = isnull(sum(isnull(ZCB_DJ,0)*isnull(ZCB_SL,0)),0) from GC_ZCB where ZCB_BH=@XM_BH and charindex(','+@ZCB_FLAG+',',cast(ZCB_LYFS as varchar))>0
      and charindex(','+@ZCB_LYFS+',',cast(ZCB_FLAG as varchar))>0
      

  5.   

    你先SELECT @ZCB_FLAG和@ZCB_LYFS,看看你执行时的赋值是不是对,用vivianfdlpw()也行吧
      

  6.   

    不拼写sql语句还行?
    主要就是写的参数赋值有问题,请问大家应该怎么写参数。