创建ACL


-- 添加acl和权限控制(sql语句执行的方式来执行)begindbms_network_acl_admin.create_acl (       -- 创建访问控制文件(ACL)acl         => 'utl_http.xml',          -- 文件名称description => 'HTTP Access',           -- 描述principal   => 'N2ADMIN',             -- 授权或者取消授权账号,大小写敏感is_grant    => TRUE,                    -- 授权还是取消授权privilege   => 'connect',               -- 授权或者取消授权的权限列表start_date  => null,                    -- 起始日期end_date    => null                     -- 结束日期);dbms_network_acl_admin.add_privilege (    -- 添加访问权限列表项acl        => 'utl_http.xml',           -- 刚才创建的acl名称 principal  => 'N2ADMIN',                    -- 授权或取消授权用户is_grant   => TRUE,                     -- 与上同 privilege  => 'resolve',                -- 权限列表start_date => null,                     end_date   => null);dbms_network_acl_admin.assign_acl (       -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。acl        => 'utl_http.xml',host       => '10.1.131.71',           -- ip地址或者域名,填写https://localhost:9000/hello与https://localhost:9000/是会报host无效的-- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题lower_port => 8080,                     -- 允许访问的起始端口号upper_port => Null                      -- 允许访问的截止端口号);commit;end;

存储过程调用http接口

CREATE OR REPLACE
PROCEDURE P_GET_HTTP_RES
/*描述:存储过程调用HTTP接口作者:tcl日期:2020-12-1
*/
(M_DOC_NO        IN VARCHAR2, --单号M_DOC_TYPE      IN VARCHAR2,--单据类型M_STANDBY            IN VARCHAR2, --备用字段M_EMP           IN VARCHAR2, --员工号RES             OUT VARCHAR2 --返回值)
ASREQ    utl_http.req;RESP   utl_http.resp;V_LINE varchar2(4000);V_TEXT varchar2(4000);L_BODY varchar2(4000);L_RES  varchar2(200);L_MSG  varchar2(4000);RESVALUE varchar2(200);L_ADD  varchar2(400);
BEGIN--基础数据校验BEGIN--单据为空if M_DOC_NO is null then RES := 'NG:' || F_C_GET_MULTILINGUAL('单号不能为空', M_LANG);RETURN;end if ;--单据类型为空if M_DOC_TYPE is null then RES := 'NG:' || F_C_GET_MULTILINGUAL('单据类型不能为空', M_LANG);RETURN;end if;END;--begin--请求json L_BODY := '{' || '"DOC_NUM":"' || M_DOC_NO || '","DOC_TYPE":"' ||Trim(substrb(M_DOC_TYPE, 0, 15)) || '","STANDBY":"' ||Trim(substrb(M_STANDBY, 0, 15))  || '"}'; --请求地址L_ADD:='http://127.0.0.1:8080/XM/http/interface.ms?model=CommonInterface&method=CommonInterface';REQ := utl_http.begin_request(L_ADD,'POST');utl_http.set_body_charset('UTF-8');utl_http.set_header(REQ, 'Content-Type', 'application/json');utl_http.set_header(REQ, 'Content-Length', lengthb(L_BODY));utl_http.write_text(REQ, L_BODY);RESP := utl_http.get_response(REQ);-- dbms_output.put_line(resp);looputl_http.read_line(RESP, V_LINE);V_TEXT := V_TEXT || V_LINE;dbms_output.put_line('请求json '||l_body);     dbms_output.put_line('返回json '||v_text); --解析传出json    {"result":"S","message":"接收成功"} oracle 12c select json_value(V_LINE,'$.result'),json_value(V_LINE,'$.message') into L_RES,L_MSG from dual;if L_RES ='S' then RES:='OK:'||L_MSG;else RES:='NG:'||L_MSG;end if;dbms_output.put_line('result:'||l_res||'           message:'||L_MSG); end loop;   utl_http.end_response(resp);utl_http.end_request(req);exceptionwhen utl_http.end_of_body thenutl_http.end_response(RESP);RETURN;when others thendbms_output.put_line(sqlerrm);utl_http.end_response(resp);utl_http.end_request(req);RES := 'NG:' ||sqlerrm ;RETURN;end;
END;

oracle存储过程调用http接口相关推荐

  1. 记录 Oracle 远程调用 HTTP 接口

    记录 Oracle 远程调用 HTTP 接口 前言 1. 演示接口 2. 开启Oracle ACL权限 3. 配置HTTP连接 调用 4. 可能会使用到 修改ACL文件 查询ACL文件是否存在 遇到的 ...

  2. Oracle 存储过程调用语句

    #oracle 存储过程调用语句 declare v_custName varchar2(10); --客户姓名 v_num number; --订单分布天数 v_time number; --每日订 ...

  3. oracle存储过程游标调用,oracle存储过程调用游标例子-Oracle

    oracle存储过程调用游标例子. 1:首先你需要创建一个包,并定义你返回的游标的类型.存储过程 create or replace package TEST_PKG is --定义游标 type t ...

  4. oracle存储过程 调用java_Oracle存储过程调用Java方法

    存储过程中调用Java程序段 软件环境: 1.操作系统:Windows 2000 Server 2.数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版 3.安装路径:C:\OR ...

  5. oracle存储过程调用sql文件,oracle存储过程的sql调用

    因为做项目的测试,所有需要不断的在数据库手工添加数据,这时候如果是批量的插入测试数据,很多情况下要用到存储过程. 如下,是Oracle数据库下一个简单的插入数据的存储过程: create or rep ...

  6. oracle存储过程调用游标例子

    1:首先你需要创建一个包,并定义你返回的游标的类型.存储过程 create or replace package TEST_PKG is --定义游标    type t_cur is REF CUR ...

  7. oracle存储过程学习经典[语法+实例+调用]

    Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程. 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应 ...

  8. Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL

    Oracle 存储过程学习 目录 Oracle 存储过程........................................................................ ...

  9. Oracle存储过程的几种调用方式

    记录:284 场景:Oracle存储过程调用方式,包括PL/SQL的SQL窗口中调用.在PL/SQL的命令窗口.在Procedures菜单列表中选中存储过程名称右键点击测试.在Package Bodi ...

最新文章

  1. 撩课-Java面试宝典-第十二篇
  2. 扎心一问!为什么前后端分离后,你比从前更痛苦?
  3. ollvm 编译器优化的bug
  4. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
  5. 2012服务器文件加密,Windows Server 2012安全方面的改变_服务器评测与技术-中关村在线...
  6. jzoj4745-看电影【期望概率,数学】
  7. Qt ModbusTCP ModbusRTU 使用同步读和异步写
  8. Python可视化神器之pyecharts
  9. Reactor和Proactor对比以及优缺点 (netty的底层原理reactor模型)
  10. 【Python爬虫】Re(正则表达式)库入门
  11. vue的matcher_一张思维导图辅助你深入了解 Vue | Vue-Router | Vuex 源码架构
  12. 硬盘损坏如何恢oracle,硬盘物理损坏,如何恢复数据库?
  13. gtest的介绍和使用
  14. html 正则表达式密码判断,JS利用正则表达式实现简单的密码强弱判断实例
  15. 使用Auto.js实现微信自动发朋友圈脚本
  16. 菜鸟教程首页制作html5
  17. 做正确的事和正确的做事
  18. 电赛专题 |国一作品_线路负载及故障检测装置
  19. PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest0.4
  20. puts() 与 printf() 的对比

热门文章

  1. Servlet简介及其运行原理
  2. 反向传播算法推导过程(非常详细)
  3. 心灵鸡汤151211
  4. 废旧光盘手工小制作_废旧光盘大变身:自制光盘台灯做法教程
  5. 大班体育电子计算机,大班体育
  6. 谷歌浏览器开发者模式下打不开页面
  7. 什么是2014年互联网上“风口的猪”?
  8. 信用卡评分模型(数据获取+数据预处理+探索分析+变量选择+模型开发+模型评估+信用评分+建立评分系统)
  9. 20190612 叠猫猫赚金币最新脚本
  10. 第八周总结CoreIDRAW