create procedure [dbo].[YMTXPro]
as
declare @ExecSql varchar(500)
--连接到oracle数据库
set @ExecSql='exec sp_addlinkedserver ''ora'',''oracle'',''msdaora'',''bssyz'''
exec(@ExecSql)
set @ExecSql='exec sp_addlinkedsrvlogin ''ora'',''false'',''sa'',''intf_ymtx'',''intf_ymtx_1203'''
exec(@ExecSql)--将oracle数据据中的表复制到SQL SERVER
set @ExecSql='select * into bss.dbo.bss_no_del_zjmd1 from ora..LRPT.BSS_NO_DEL_ZJMD'
exec(@ExecSql)
set @ExecSql='select * into bss.dbo.interface_ymtx1 from ora..BSSQRY.INTERFACE_YMTX_VIEW'
exec(@ExecSql)........set @ExecSql='exec sp_dropserver ''ora'',''droplogins'''
exec(@ExecSql)GO
数据库SQL SERVER 2000BSS_NO_DEL_ZJMD表和INTERFACE_YMTX_VIEW视图',如果不存在执行存储过程报错退出,后面的语句也不执行了,
1.如何判断oracle库中存不存在BSS_NO_DEL_ZJMD表和INTERFACE_YMTX_VIEW视图?
2.SQL SERVER 2000如何容错,类似try catch 一类的,可以捕捉错误,继续往下执行

解决方案 »

  1.   

    SQL SERVER 2000 试试@@ERROR吧
      

  2.   

    库中存不存在BSS_NO_DEL_ZJMD表和INTERFACE_YMTX_VIEW视图?
    IF OBJECT_ID('BSS_NO_DEL_ZJMD') IS NOT NULL
    一样的判断也可以利用
    SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U' AND NAME='BSS_NO_DEL_ZJMD'
      

  3.   

    try catch 一类的SQL2000里面没TRY CATCH好像,05以上的好像有
      

  4.   

    oracle 库不能这样判断表存不存在,这试过不好用
      

  5.   

    1.ORACLE 的不懂  
    2.写事物 用@@error判断
      

  6.   

    楼主可以考虑将
    -1 可以会出错的语句放到一个存储过程中
    create proc proc_name
    as
    declare @ExecSql varchar(500)
    --连接到oracle数据库
    set @ExecSql='exec sp_addlinkedserver ''ora'',''oracle'',''msdaora'',''bssyz'''
    exec(@ExecSql)
    set @ExecSql='exec sp_addlinkedsrvlogin ''ora'',''false'',''sa'',''intf_ymtx'',''intf_ymtx_1203'''
    exec(@ExecSql)
    set @ExecSql='select * into bss.dbo.bss_no_del_zjmd1 from ora..LRPT.BSS_NO_DEL_ZJMD'
    exec(@ExecSql)
    set @ExecSql='select * into bss.dbo.interface_ymtx1 from ora..BSSQRY.INTERFACE_YMTX_VIEW'
    exec(@ExecSql)
    --2 在[dbo].[YMTXPro]调用刚才的存储过程
    create procedure [dbo].[YMTXPro]
    as
     exec proc_name
     --其他语句
     set @ExecSql='exec sp_dropserver ''ora'',''droplogins'''
     exec(@ExecSql)
    因为
    被调用的存储过程发生严重错误时,
    调用它的存储过程可以捕获错误,并可以继续执行下去