帮忙看看我这个存贮过程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到查询分析器里,发现果然都是正常的括号。
而我运行之后显示的确实命令已成功完成!
没问题呀~~~:(