zoukankan      html  css  js  c++  java
  • 【转】SQL2008 链接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;
    1
    2
    3
    4
    5
    一个传入参数 一个返回参数。就是通过部门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);
    1
    2
    3
    4
    5
    6
    这里要注意返回参数,一定要加上Output,不然会报错。

    感谢这位博主的文章 解决我很大的问题 给我帮助很多 特别是调用oracle的存储过程。http://blog.sina.com.cn/s/blog_614b6f210100t80r.html
    ————————————————
    版权声明:本文为CSDN博主「Cc_Rain0624」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Cc_Rain0624/article/details/79100544

  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/tc310/p/11953175.html
Copyright © 2011-2022 走看看