34,587
社区成员
发帖
与我相关
我的任务
分享
declare @dwdm varchar(10),@dwmc varchar(40),@Sql NVARCHAR(max)
declare hsdwmc cursor for
select dwdm,dwmc from dbo.zt_DW
open hsdwmc
fetch next from hsdwmc into @dwdm,@dwmc
while @@FETCH_STATUS =0
begin
declare @newpzbname1 varchar(44)
set @newpzbname1 =(@dwmc+'行政凭证')
print @newpzbname1 --这里能正常输出
--动态传参
SET @Sql='SELECT Jzrq,yf,Pzfh,Kmdm,fj,Zy,Jje,Dje into @newpzbname1 from '+@dwmc+' where dwdm =@dwdm' --这里却不能用这个变量作为表名
EXEC sys.sp_executesql @Sql
,N'@dwdm varchar(10)'
,@dwdm
fetch next from hsdwmc into @dwdm,@dwmc --加上循环游标
end
close hsdwmc
deallocate hsdwmc
DECLARE @dwdm VARCHAR(10),@dwmc VARCHAR(40)
DECLARE @SQL NVARCHAR(MAX)
DECLARE @newpzbname1 varchar(44)
DECLARE hsdwmc CURSOR for
SELECT dwdm,dwmc FROM dbo.zt_DW
OPEN hsdwmc
FETCH NEXT FROM hsdwmc INTO @dwdm,@dwmc
WHILE @@FETCH_STATUS =0
BEGIN
SET @newpzbname1 = ''
SET @newpzbname1 = '#' + @dwmc+'行政凭证'
PRINT @newpzbname1 --这里能正常输出
SET @SQL = '
IF OBJECT_ID(''tempdb..'+@newpzbname1+''') IS NOT NULL DROP TABLE '+ @newpzbname1 +'
SELECT
Jzrq,yf,Pzfh,Kmdm,fj,Zy,Jje,Dje
INTO ' + @newpzbname1 + '
FROM dbo.zw_PZMXls WHERE 1=2
INSERT '+@newpzbname1+'
SELECT
Jzrq,yf,Pzfh,Kmdm,fj,Zy,Jje,Dje
FROM
dbo.zw_PZMXls
WHERE
dwdm = ' +@dwdm+ '
SELECT * FROM '+ @newpzbname1 +'
'
PRINT @SQL
EXEC sp_executesql @SQL
FETCH NEXT FROM hsdwmc INTO @dwdm,@dwmc
END
CLOSE hsdwmc
DEALLOCATE hsdwmc