An INSERT EXEC statement cannot be nested.
--此过程建立于2003-11-28,作用是对字符串进行特殊处理!编者:汪志洪。
create proc char_manage
@chars varchar(200)
as
create table #aa(no int identity(1,1),qty decimal(18,2),date1 varchar(10))
declare @sql varchar(200),@left varchar(100),@right varchar(200),@qty decimal(18,2),@sqls varchar(1000)
set @sql=right(@chars,len(@chars)-charindex('[',@chars))
set @sql=left(@sql,len(@sql)-1)
--select @sql
-----set @sql='11/11;12/11;15/11(100);15/11;17/11(200);18/11;20/11;23/11(300)'
while charindex('(',@sql)>0
begin
set @left=left(@sql,charindex('(',@sql)-1)
--select @left
select @right=right(@sql,len(@sql)-charindex('(',@sql))
--select @right
select @sql=right(@sql,len(@right)-charindex(';',@right))
--select @sql
select @qty=convert(decimal(18,2),left(@right,charindex(')',@right)-1))
--select @qty
select @sqls=replace(@left,';',''' union all select '+cast(@qty as varchar(10))+',''')
--select @sqls
select @sqls='select '+cast(@qty as varchar(10))+','''+@sqls+''''
--select @sqls
insert #aa exec(@sqls)
end
select * from #aa
drop table #aa
go
create table #bb(no int,qty decimal(18,2),date varchar(10))
declare @chars varchar(200)
set @chars='2/-2(A3AF-119)[11/11;12/11;15/11(100);15/11;17/11(200);18/11;20/11;23/11(300)]'
exec char_manage @chars
insert into #bb exec char_manage @chars --这个会出错
select * from #bb