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'
(
@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'
select * from #Stock'exec(@str)
你可以先把@str 打印出来看看。
第一先不要返回结果,先在每步把动态的sql先print出来,确定符合预期了,然后 exec
(
@DWMC varchar(50) ,
@CPMC varchar(50),
@GGXH varchar(50),
@iYear varchar(50),
@iMonth varchar(50)
)
的参数不用括号,还有就是括号不是英文状态下书写的吧!
insert into #Stock (物料编码 ,产品名称 ,规格型号 ,数量 ,单位 ,单价 ,金额 ,税率 ,税额 )
上面这句话的左括号才是英文状态下的括号!
呵呵,改一下呵~应该是这里的问题!
全角的括号很黑哦~~~呵呵!!
可以断定括号不是全角的!!
后来我copy到查询分析器里,发现果然都是正常的括号。
而我运行之后显示的确实命令已成功完成!
没问题呀~~~:(