SQL2008 链接Oracle 调用存储过程

本文介绍了如何在SQL Server与Oracle数据库之间实现数据互通的方法,包括配置连接、使用不同查询方式以及调用Oracle存储过程等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近接触了两个项目都用到了SQL与Oracle数据互通,其中一个数据同步还要调用ORACLE中的存储过程来执行相应的操作。

1. SQL链接ORACLE 都是可视化的操作 如下图:
这里写图片描述

红色框选的是oracle的数据驱动,如果没有这个驱动 那需要单独安装oracle的client端 装完以后就有了。

2.在创建之前,在SQLSERVER中,链接服务器->访问接口->OraOLEDB.Oracle->右键属性,选中 “Allow inprocess” (中文为:允许进程内)
这里写图片描述

这一步是使我们选择的OraOLEDB.Oracle接口打开执行操作。
如未设置会报如下错误:“无法初始化链接服务器 “null” 的 OLE DB 访问接口 “OraOLEDB.Oracle” 的数据源对象”

3.创建好链接服务就可以在SQL端通过语句查询oracel的数据了 提供了两种查询方式
1. SELECT* FROM 链接服务器名字..登录用户名.表名 注意:必须要全大写
这种方式可以进行操作,优点是使用简单,一目了然,而缺点是性能太差,查询大数据量表很慢。效率太差。
2. select * from openquery(链接服务器名字,’select * from oracle_table_name’);
带查询参数:select * from openquery(链接服务器名字,’select * from test’) where test_id=10; test_id 是test表的字段
关于链接服务查询 推荐方式2 速度更快。

4.SQL调用oracle的存储过程

--oracle创建存储过程
CREATE OR REPLACE PROCEDURE SHOW_PROC(DEPT_NO INT, V_NAME OUT VARCHAR) IS
BEGIN
    SELECT D.DNAME INTO V_NAME FROM DEPT D WHERE D.DEPTNO = DEPT_NO;
END;

一个传入参数 一个返回参数。就是通过部门ID 返回部门名字

SQL端调用

declare @DEPTNO INT;--传入参数
declare @V_NAME VARCHAR(20);--返回参数
SET @DEPTNO=10;
-- 调用存储过程
EXEC('BEGIN SHOW_PROC(?,?);END;',@DEPTNO,@V_NAME output) at NC;
print(@V_NAME);

这里要注意返回参数,一定要加上Output,不然会报错。

感谢这位博主的文章 解决我很大的问题 给我帮助很多 特别是调用oracle的存储过程。http://blog.sina.com.cn/s/blog_614b6f210100t80r.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值