create procedure p_fzkczlz
@t_con varchar(100),
@t_bname sysname
as
declare @stsql varchar(2),@tz int
set @tz=1
set @stsql=substring(@t_con,1,2)
declare @tb table (id nvarchar(10))
while len(@stsql)>0
begin
insert into @tb select @stsql
set @tz=@tz+2
set @stsql=substring(@t_con,@tz,2)
end
SELECT 仓库, 商品编号, 商品类别, 商品名称, 单据编号, 摘要, 收入数量, 收入单价,
收入金额, 发出数量, 发出单价, 发出金额, 商品售价, 操作日期, 操作时间 FROM
dbo.v_cangkumx where 商品类别 in (select id from @tb)
go问题: 我想把SELECT 查询后的结果放在 @t_bname 动态变量表名的表里.(因为想实现存储在不同机器查询后结果)
我修改存储过程后出现新的错误.
新的过程:
CREATE procedure p_FZ_spzl
@t_con varchar(100),
@tb_name sysname
as
declare @stsql varchar(2),@tz int
set @tz=1
set @stsql=substring(@t_con,1,2)
declare @tb table (id nvarchar(10))
declare @sql varchar(8000)
while len(@stsql)>0
begin
insert into @tb select @stsql
set @tz=@tz+2
set @stsql=substring(@t_con,@tz,2)
end
set @sql = 'SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装' + @tb_name + ' FROM dbo.v_spzl where 类别编号 in (select id from'+ @tb +')'
exec(@sql)
----SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商,
----最小库存, 最大库存, 兑换标准, 是否需安装 FROM dbo.v_spzl where 类别编号 in (select id from @tb)
GO
错误提示是:" 必须生明&tb变量 " 可我在定义时已经声明了呀,请问这是为什么
@t_con varchar(100),
@t_bname sysname
as
declare @stsql varchar(2),@tz int
set @tz=1
set @stsql=substring(@t_con,1,2)
declare @tb table (id nvarchar(10))
while len(@stsql)>0
begin
insert into @tb select @stsql
set @tz=@tz+2
set @stsql=substring(@t_con,@tz,2)
end
SELECT 仓库, 商品编号, 商品类别, 商品名称, 单据编号, 摘要, 收入数量, 收入单价,
收入金额, 发出数量, 发出单价, 发出金额, 商品售价, 操作日期, 操作时间 FROM
dbo.v_cangkumx where 商品类别 in (select id from @tb)
go问题: 我想把SELECT 查询后的结果放在 @t_bname 动态变量表名的表里.(因为想实现存储在不同机器查询后结果)
我修改存储过程后出现新的错误.
新的过程:
CREATE procedure p_FZ_spzl
@t_con varchar(100),
@tb_name sysname
as
declare @stsql varchar(2),@tz int
set @tz=1
set @stsql=substring(@t_con,1,2)
declare @tb table (id nvarchar(10))
declare @sql varchar(8000)
while len(@stsql)>0
begin
insert into @tb select @stsql
set @tz=@tz+2
set @stsql=substring(@t_con,@tz,2)
end
set @sql = 'SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装' + @tb_name + ' FROM dbo.v_spzl where 类别编号 in (select id from'+ @tb +')'
exec(@sql)
----SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商,
----最小库存, 最大库存, 兑换标准, 是否需安装 FROM dbo.v_spzl where 类别编号 in (select id from @tb)
GO
错误提示是:" 必须生明&tb变量 " 可我在定义时已经声明了呀,请问这是为什么
@t_con varchar(100),
@t_bname sysname
as
declare @stsql varchar(2),@tz int,@sql nvarchar(800)
set @tz=1
set @stsql=''''+substring(@t_con,1,2)+ ''''
select @sql = 'declare @tb table (id nvarchar(10)) '
while len(@stsql)>0
begin
set @sql= @sql + ' insert into @tb select ' + @stsql
set @tz=@tz+2
set @stsql=''''+substring(@t_con,@tz,2) + ''''
end
print (@sql)
set @sql= @sql +' SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装 '
+ @t_bname + ' FROM dbo.v_spzl where 类别编号 in (select id from @tb )'
print (@sql)
exec (@sql)
go
DECLARE @t_con varchar(100)
DECLARE @t_bname nvarchar(128)
SELECT @t_con = '0102'
SELECT @t_bname = N't_ss'
EXEC @RC = [ls200906].[dbo].[p_fzkczlzt] @t_con, @t_bname
DECLARE @PrnLine nvarchar(4000)
PRINT '存储过程: ls200906.dbo.p_fzkczlzt'
SELECT @PrnLine = ' 返回代码 = ' + CONVERT(nvarchar, @RC)
PRINT @PrnLine没有结果 ,到现在还在提示"正在执行批量查询"
create procedure p_fzkczlz
@t_con nvarchar(100),
@t_bname nvarchar(100)
as
declare @stsql nvarchar(2000),@tz int,@sql nvarchar(4000)
set @tz=1
select @stsql= ''''+substring(@t_con,1,2) + ''''select @sql = 'declare @tb table (id nvarchar(10)) '
while @tz<len(@t_con)
begin
set @sql= @sql + ' insert into @tb select ' + @stsql
set @tz=@tz+2
set @stsql=''''+substring(@t_con,@tz,2) + ''''
print @stsql
end
print (@sql)
set @sql= @sql +' SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装 '
+ @t_bname + ' FROM dbo.v_spzl where 类别编号 in (select id from @tb )'
print (@sql)
exec (@sql)
go
--这次应该对了
create procedure p_fzkczlz
@t_con nvarchar(100),
@t_bname nvarchar(100)
as
declare @stsql nvarchar(2000),@tz int,@sql nvarchar(4000)
set @tz=1
select @stsql= ''''+substring(@t_con,1,2) + ''''select @sql = 'declare @tb table (id nvarchar(10)) '
while @tz<len(@t_con)
begin
set @sql= @sql + ' insert into @tb select ' + @stsql
set @tz=@tz+2
set @stsql=''''+substring(@t_con,@tz,2) + ''''end
set @sql= @sql +' SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装 into '
+ @t_bname + ' FROM dbo.v_spzl where 类别编号 in (select id from @tb )'
print (@sql)
exec (@sql)
go
--输出的sql
declare @tb table (id nvarchar(10))
insert into @tb select '01'
insert into @tb select '02'
SELECT 类别编号, 商品编号, 商品名称, 助记码, 单位, 进价, 零售价, 是否促销, 供应商, 最小库存, 最大库存, 兑换标准, 是否需安装
into t_ss
FROM dbo.v_spzl
where 类别编号 in (select id from @tb )