首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙看看小弟我这个存贮过程EXEC 如何不能执行是否因为括号‘(’的有关问题

2012-03-27 
帮忙看看我这个存贮过程EXEC 怎么不能执行是否因为括号‘(’的问题ALTERPROCEDURETJTH_TJ_CP(@DWMCvarchar(5

帮忙看看我这个存贮过程EXEC 怎么不能执行是否因为括号‘(’的问题
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 '


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

exec(@str)
[解决办法]
括号是全角的。
你可以先把@str 打印出来看看。
[解决办法]
这个问题的话,我觉得很简单啊
第一先不要返回结果,先在每步把动态的sql先print出来,确定符合预期了,然后 exec
[解决办法]
语法错误的话,我觉得print语句出来看看
[解决办法]
ALTER PROCEDURE TJTH_TJ_CP
(
@DWMC varchar(50) ,
@CPMC varchar(50),
@GGXH varchar(50),
@iYear varchar(50),
@iMonth varchar(50)
)
的参数不用括号,还有就是括号不是英文状态下书写的吧!
[解决办法]
我很讨厌sql语句中加入全角字符报错。
[解决办法]
print语句出来看看,单引号没加对。
[解决办法]
括号好象都是中文状态下的(,
insert into #Stock (物料编码 ,产品名称 ,规格型号 ,数量 ,单位 ,单价 ,金额 ,税率 ,税额 )
上面这句话的左括号才是英文状态下的括号!
呵呵,改一下呵~应该是这里的问题!
[解决办法]
全角(物料编码)
半角(物料编码)
楼主请看哈~
[解决办法]
奇怪!!和楼主发的也不一样啊!!
全角的括号很黑哦~~~呵呵!!
可以断定括号不是全角的!!
后来我copy到查询分析器里,发现果然都是正常的括号。
而我运行之后显示的确实命令已成功完成!
没问题呀~~~:(

热点排行