ALTER            PROCEDURE TJTH_TJ_CP
(
@DWMC varchar(50) ,
@CPMC varchar(50),
@GGXH varchar(50),
@iYear varchar(50),
@iMonth varchar(50)
)/*
select * from 发票登记
select * from 发票登记明细select * from 出库单明细
SELECT * FROM 材料入库单明细 WHERE 物料编码 in (SELECT 物料编码 FROM 材料入库单 WHERE 库别  ='%库%')EXEC TJTH_TJ_CP  ' ',' ', ' ', 2007,1
*/
AS
CREATE TABLE #Stock (物料编码 varchar(50) ,产品名称 varchar(50),规格型号 varchar(50),数量 varchar(50),单位 varchar(50),单价 varchar(50),金额 varchar(50),税率 varchar(50),税额 varchar(50))
declare 
        --@count int ,       
        @str varchar(5000) ,
        @strsql varchar(5000) ,
        @s1 varchar(5000),
        @s2 varchar(5000),
        @s3 varchar(5000),
        @s4 varchar(50),
        @s5 varchar(50)          set   @strsql='select  物料编码,货物或应税劳务名称,规格型号,'
+' 数量,单位, '
+' 单价, '
+' 金额, '
+' 税率, '
+' 税额 '
+' from 发票登记明细  where 发票编码 IN ( SELECT 发票编码 FROM 发票登记 WHERE 1=1 '
                      
  if @iYear<>''
         set @s1 = ' AND   年 like ''%'+@iYear+'%'''
          else  set @s1=''
  if @iMonth<>''
         set @s2 = ' AND   月 like ''%'+@iMonth+'%'''
          else  set @s2=''     if @DWMC<>''
         set  @s3 =' AND 销售名称  like ''%'+@DWMC+'%'''
           else set @s3=''   if @CPMC<>''
     set @s4 = ' AND   货物或应税劳务名称 like ''%'+@CPMC+'%'''
         else set @s4=''   if @GGXH<>''
         set @s5 = ' AND   规格型号 like ''%'+@GGXH+'%'''
          else  set @s5=''
  set @str=@strsql+@s1+@s2+@s3+')'+' AND 1=1 '+@s4+@s5
  -- SELECT @STR INTO #TT FROM exec  ( @str )     insert into #Stock (物料编码 ,产品名称 ,规格型号 ,数量 ,单位 ,单价 ,金额 ,税率 ,税额 )
     exec  ( @str )
     select * from #Stock
DROP TABLE #stock-- EXEC TJTH_TJ_CP  ' ',' ', ' ', '2007','1'

解决方案 »

  1.   

    set @str= 'insert into #Stock (物料编码,产品名称,规格型号,数量,单位,单价,金额,税率,税额) '+@str+'
    select * from #Stock'exec(@str)
      

  2.   

    括号是全角的。
    你可以先把@str 打印出来看看。
      

  3.   

    好象不行哦,是否      where 发票编码 IN ( SELECT 发票编码   这里面( 问题
      

  4.   

    这个问题的话,我觉得很简单啊
    第一先不要返回结果,先在每步把动态的sql先print出来,确定符合预期了,然后 exec
      

  5.   

    语法错误的话,我觉得print语句出来看看
      

  6.   

    ALTER            PROCEDURE TJTH_TJ_CP
    (
    @DWMC varchar(50) ,
    @CPMC varchar(50),
    @GGXH varchar(50),
    @iYear varchar(50),
    @iMonth varchar(50)
    )
    的参数不用括号,还有就是括号不是英文状态下书写的吧!
      

  7.   

    我很讨厌sql语句中加入全角字符报错。
      

  8.   

    print语句出来看看,单引号没加对。
      

  9.   

    括号好象都是中文状态下的(,
    insert into #Stock (物料编码 ,产品名称 ,规格型号 ,数量 ,单位 ,单价 ,金额 ,税率 ,税额 )
    上面这句话的左括号才是英文状态下的括号!
    呵呵,改一下呵~应该是这里的问题!
      

  10.   

    奇怪!!和楼主发的也不一样啊!!
    全角的括号很黑哦~~~呵呵!!
    可以断定括号不是全角的!!
    后来我copy到查询分析器里,发现果然都是正常的括号。
    而我运行之后显示的确实命令已成功完成!
    没问题呀~~~:(