问题描述
这个 问题放错大类了 不会移动现在有这个需求 从sqlserver里查出数据进行简单的出来后 插入oracle表中 我写好的个存储但是运行的时候感觉效率特别慢谁能帮我把下面的 语句优化下存储在sqlserver这边if Exists(select name from sysobjects where name='ZHIJIAN_BANZHENG_INIT' and type='P') drop procedure ZHIJIAN_BANZHENG_INITgocreate PROCEDURE ZHIJIAN_BANZHENG_INITas DECLARE @zch varchar(30), --长度根据实际长度修改@jgdm varchar(30),@jgmc varchar(250),@jglx varchar(30),@bzrq datetime,@body varchar(500),@date varchar(10),@uid varchar(30)set @date =convert(char(10),getdate(),120) --获得当前日期declare cursor2 cursor for --定义游标cursor1select zch,jgdm,jgmc,jglx,bzrq from jgdm where jglx='1' --使用游标的对象(跟据需要填入select语句)open cursor2 -- fetch cursor2 --into @name,@party_id --打开游标WHILE 1=1 --判断是否成功获取数据beginfetch next from cursor2 into @zch,@jgdm,@jgmc,@jglx,@bzrq --将游标向下移1行if(@@FETCH_STATUS =-1)breakSET @uid=CAST(CAST(NEWID() as nvarchar(36)) + CAST(GETDATE() as varchar(3)) as varchar(30))set @body='{"QYZCH":'+@zch+--封装为JSON格式'","ZZJGDM":"'+@jgdm+'","JGMC":'+@jgmc+'","JGZCLX":"'+@jglx+'","BZRQ":"'+CONVERT (varchar(8),@bzrq,112) +'"}'--print(@body)insert into [127.0.0.1]..[JXWFRONT].[DATA_TEMP_REPORT] values(@uid,'zhijian_banzheng',@body,'1',@date) --插入oracle数据库 如何优化endclose cursor2 --关闭游标deallocate cursor2
解决方案
引用insert into [127.0.0.1]..[JXWFRONT].[DATA_TEMP_REPORT] values(select CAST(CAST(NEWID() as nvarchar(36)) + CAST(GETDATE() as varchar(3)) as varchar(30)), 'zhijian_banzheng', '{"QYZCH":'+ zch +'","ZZJGDM":"'+jgdm+'","JGMC":'+jgmc+'","JGZCLX":"'+jglx+'","BZRQ":"'+CONVERT (varchar(8),@bzrq,112) +'"}', '1', convert(char(10),getdate(),120) from jgdm where jglx='1' )