34,837
社区成员




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)
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
go
begin try
select 1/0
end try
begin catch
print N'除数不能为0'
end catch
go
begin try
select * from sssss --无法捕获的错误
end try
begin catch
print N'表不存'
end catch
/*
-----------
(0 個資料列受到影響)
除数不能为0
訊息 208,層級 16,狀態 1,行 2
無效的物件名稱 'sssss'。
*/
2005的
---raiserror的用法
begin try
raiserror('生成一个错误消息',11,1)
end try
begin catch
select error_message() as 错误消息,
error_severity() as严重级别,
error_state() as state;
end catch
----oracle下叛断一个对象是否存在
DECLARE
n INT;
BEGIN
select count(1)
into n
from user_objects
where object_name='YOUROBJECT';
IF n>0 THEN
--存在
...;
ELSE
--不存在
...;
END IF;
END;
楼主可以考虑将
-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)
begin try
select 1/0
end try
begin catch
print @@error
print 'sdf'
end