CREATE Proc SP_SynchronizeDLFXSFInfo @PARA1 VARCHAR(200),@PARA2 VARCHAR(200),@PARA3 VARCHAR(200),@PARA4 VARCHAR(200),@PARA5 VARCHAR(1)
WITH ENCRYPTION
AS  
SET XACT_ABORT on
BEGIN TRAN EXEC ('UPDATE DLYH SET JSRQ='''+@PARA2+''',YS=(DLYH.YS-HAA.C)  FROM 
(select yhh as A,SUM(hjdf) AS C from 
openquery(ora,''select * from   ' +@PARA1+ ' .view_dlfx'')
where fxrq >='''+@PARA2+''' and fxrq <=dateadd(day,1, '''+@PARA3+''' ) and  ( JH ='+@PARA4+') group by yhh ) HAA,DLYH WHERE 
 DLYH.YHH=HAA.A')IF @@error <> 0
BEGIN
 ROLLBACK TRANSACTION  
END
ELSE
 COMMIT TRANSACTIONgo

解决方案 »

  1.   

    CREATE Proc SP_SynchronizeDLFXSFInfo @PARA1 VARCHAR(200),@PARA2 VARCHAR(200),@PARA3 VARCHAR(200),@PARA4 VARCHAR(200),@PARA5 VARCHAR(1)
    WITH ENCRYPTION
    AS  
    set  XACT_ABORT on
    SET ANSI_NULL_DFLT_ON on
    SET ANSI_WARNINGS on  EXEC ('UPDATE DLYH SET JSRQ='''+@PARA2+''',YS=(DLYH.YS-HAA.C)  FROM 
    (select yhh as A,SUM(hjdf) AS C from 
    openquery(ora,''select * from   ' +@PARA1+ ' .view_dlfx'')
    where fxrq >='''+@PARA2+''' and fxrq <=dateadd(day,1, '''+@PARA3+''' ) and  ( JH ='+@PARA4+') group by yhh ) HAA,DLYH WHERE 
     DLYH.YHH=HAA.A')
    go
      

  2.   

    ‘该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。’结果依然存在。
      

  3.   

    CREATE Proc SP_SynchronizeDLFXSFInfo @PARA1 VARCHAR(200),@PARA2 VARCHAR(200),@PARA3 VARCHAR(200),@PARA4 VARCHAR(200),@PARA5 VARCHAR(1)
    WITH ENCRYPTION
    AS  
    exec('
    set  XACT_ABORT on
    SET ANSI_NULL_DFLT_ON on
    SET ANSI_WARNINGS on select * into #临时表 from openquery(ora,''select * from   ' +@PARA1+ ' .view_dlfx'') tem
    where fxrq >='''+@PARA2+''' and fxrq <=dateadd(day,1, '''+@PARA3+''' ) and  ( JH ='+@PARA4+') group by yhh )update DLYH set JSRQ='''+@PARA2+''',YS=(DLYH.YS-HAA.C) from #临时表 HAA where  DLYH.YHH=HAA.A')go
    ?????
      

  4.   

    sql中这样应该是对了,你看看oracle的相关服务启动了吗