刚接触sql编程,自己随便写了一段。
是要把数据从另外一台机子的前置机接口数据库,导入到中心端的buff库中
前置机的接口库相当于中心端buff库的一个子集,大概也就导120个表的样子
代码如下,在机子上跑了下,太慢了,半个小时过去了,还没跑完,请大家帮忙看看,有什么地方需要优化的没有?SELECT name AS tablename INTO temp_name FROM sysobjects WHERE xtype='u'
DELETE FROM temp_name WHERE tablename = 'temp_name'
declare @t_name varchar(30)
DECLARE @sql VARCHAR(4000)
declare dic_cur cursor for select tablename from temp_name
open dic_cur
fetch next from dic_cur into @t_name
if (@@FETCH_STATUS <> 0)
begin
print N'fetch error!'
END
while @@FETCH_STATUS=0
BEGIN
EXECUTE ('TRUNCATE TABLE '+ @t_name)
SET @sql='insert into '+@t_name+' SELECT * FROM itsv.qzj_interface.dbo.'+@t_name
EXECUTE @sql
END
DROP TABLE temp_name//itsv 是定义的链接服务器,连到局域网内另外一台机器。
是要把数据从另外一台机子的前置机接口数据库,导入到中心端的buff库中
前置机的接口库相当于中心端buff库的一个子集,大概也就导120个表的样子
代码如下,在机子上跑了下,太慢了,半个小时过去了,还没跑完,请大家帮忙看看,有什么地方需要优化的没有?SELECT name AS tablename INTO temp_name FROM sysobjects WHERE xtype='u'
DELETE FROM temp_name WHERE tablename = 'temp_name'
declare @t_name varchar(30)
DECLARE @sql VARCHAR(4000)
declare dic_cur cursor for select tablename from temp_name
open dic_cur
fetch next from dic_cur into @t_name
if (@@FETCH_STATUS <> 0)
begin
print N'fetch error!'
END
while @@FETCH_STATUS=0
BEGIN
EXECUTE ('TRUNCATE TABLE '+ @t_name)
SET @sql='insert into '+@t_name+' SELECT * FROM itsv.qzj_interface.dbo.'+@t_name
EXECUTE @sql
END
DROP TABLE temp_name//itsv 是定义的链接服务器,连到局域网内另外一台机器。
begin
EXECUTE ('TRUNCATE TABLE '+ @t_name)
SET @sql='insert into '+@t_name+' SELECT * FROM itsv.qzj_interface.dbo.'+@t_name
EXECUTE @sql
fetch next from dic_cur into @t_name --少了一句
end
if (@@FETCH_STATUS <> 0)
begin
print N'fetch error!'
END
应该设置为if else 结构这一句:
EXECUTE @sql
应为
execute (@sql)
fetch next from dic_cur into @t_name
不然就是个死循环.
消息 7202,级别 11,状态 2,第 16 行但是执行 select * from itsv.qzj_interface.dbo.表名 又没问题。。
至今未解决,很灵异