首页 > 数据库 >Oracle 数据库存储过程调用SpringBoot API 接口方法

Oracle 数据库存储过程调用SpringBoot API 接口方法

时间:2023-11-27 09:12:47浏览次数:37  
标签:http SpringBoot -- REQ utl acl API Oracle end

数据库存储过程代码

CREATE OR REPLACE PROCEDURE FSMT.P_GET_HTTP_RES
/*
     描述:存儲過程掉用HTTP接口
     作者:Janus
     日期:2023-11-23
*/
(
 M_DOC_NO        IN VARCHAR2, --??
 M_DOC_TYPE      IN VARCHAR2,--?据?型
 M_STANDBY       IN VARCHAR2, --?用字段
 M_EMP           IN VARCHAR2, --?工?
 RES             OUT VARCHAR2 --返回值
 )
AS
  REQ    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
      L_BODY := ' {"msgid":"12313","usercode":"F2903004","show_notification_flag":1,"play_title_voice_flag":"1","Title":"123131","content":"1231231","query_url":"http://10.74.14.38/assets/ad8bebfbfe627.jpg"}';
      L_ADD:='http://172.16.3.82:18848/sys-message/send_alarm_ulist';
      REQ := utl_http.begin_request(url =>L_ADD, method =>'POST');     
      utl_http.set_body_charset('UTF-8');
      utl_http.set_header(REQ, 'Content-Type', 'application/json');
      utl_http.set_header(REQ, 'Authorization', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJGMjkwMzAwNCIsImlhdCI6MTcwMDQ3MTY0NCwiZXhwIjo3NzQ4NDcxNjQ0fQ.arfdRpFzQFfDC681dU4zWqjEe3CCCS1LGWEVuDi9_WS_r1aks2CG8ooNj-jyaCUWyvv_h9cHPohrblJjMuNc3A');
      utl_http.set_header(REQ, 'Content-Length', lengthb(L_BODY));
      utl_http.write_text(REQ, L_BODY);
      RESP := utl_http.get_response(REQ);

      utl_http.end_response(resp);
      utl_http.end_request(req);

    exception
      when utl_http.end_of_body then
        utl_http.end_response(RESP);

        RETURN;
      when others then
        dbms_output.put_line(sqlerrm);
        utl_http.end_response(resp);
        utl_http.end_request(req);
        RES := 'NG:' ||sqlerrm ;
        RETURN;

    end;  
要想Oracle 访问网络接口,还需要赋予必要权限
begin
  dbms_network_acl_admin.create_acl ( 
    acl         => 'utlhttpfsmt.xml',       -- 文件名称
    description => 'HTTP Access',           -- 描述
    principal   => 'FSMT',                  -- 授权或者取消授权账号,大小写敏感
    is_grant    => TRUE,                    -- 授权还是取消授权
    privilege   => 'connect',               -- 授权或者取消授权的权限列表
    start_date  => NULL,                    -- 起始日期
    end_date    => NULL                     -- 结束日期
  );
   commit;
end;
------------------------------------------------------------------------------------------
begin
  dbms_network_acl_admin.add_privilege (    -- 添加访问权限列表项
    acl        => 'utlhttpfsmt.xml',        -- 刚才创建的acl名称 
    principal  => 'FSMT',                   -- 授权或取消授权用户
    is_grant   => TRUE,                     -- 与上同 
    privilege  => 'connect',                -- 权限列表 connect即可
    start_date => NULL,                     
    end_date   => NULL
  );
   commit;
end;
---------------------------------------------------------------------------------------------
begin
  dbms_network_acl_admin.assign_acl (       -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。
    acl        => 'utlhttpfsmt.xml',
    host       => '172.16.3.82',            -- ip地址或者域名,填写
                                            -- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题
    lower_port => 10000,                    -- 允许访问的起始端口号
    upper_port => 30000                     -- 允许访问的截止端口号
  );
  commit;
end;

  

  查看权限是否已经存在

SELECT*  FROM dba_network_acl_privileges; 
SELECT * FROM dba_network_acls

 

找一个已经写好的测试接口如图

 

完结!

 

标签:http,SpringBoot,--,REQ,utl,acl,API,Oracle,end
From: https://www.cnblogs.com/janus2003/p/17858414.html

相关文章

  • 【Linux API 揭秘】module_init与module_exit
    【LinuxAPI揭秘】module_init与module_exitLinuxVersion:6.6Author:DongeGithub:linux-api-insides 1、函数作用module_init和module_exit是驱动中最常用的两个接口,主要用来注册、注销设备驱动程序。并且这两个接口的实现机制是一样的,我们先以module_init为切入点分析。......
  • springboot打印启动信息
    打印启动信息转载自:www.javaman.cn1springBean实例化流程基本流程:1、Spring容器在进行初始化时,会将xml或者annotation配置的bean的信息封装成一个BeanDefinition对象(每一个bean标签或者@bean注解都封装成一个BeanDefinition对象),所有的BeanDefinition存储到一个名为beanDefinitio......
  • 基于springboot的医护人员排班系统-计算机毕业设计源码+LW文档
    选题的意义、研究内容及方法:(后面附主要参考文献)选题意义目的科学合理地安排医护人员工作,提高医护人员排班效率,在满足各病区个性化的基础上保证医护人员的统一管理。方法采用软件生命周期开发方法,自顶向下,逐步细化。对各个科室医护人员的排班信息进行维护,维护好相关信息后进行......
  • 学习Springboot的第五天
    一、运行复杂代码通过第四天的学习,解决了粗心错误,瞬间信心倍增,终于能赶赶进度了,此时我想创造的心按耐不住了,现实是残酷的。。。。打开一个复杂点的新工程之后,没有报jdk的问题,可是又出现另外的插件问题我又搜了一下,又是settings.xml的问题,还是得配置一段代码此处是settings.xm......
  • springboot+vue持续集成
    Jenkins持续集成项目部署参考资料:见参考资料详情项目实战成长:见百度网盘jenkins视频资料地址参考:https://www.bilibili.com/video/BV1kJ411p7mV?spm_id_from=333.999.0.0整体流程:先下载tomcat,到http://tomcat.apache.org/index.html解压tomcat,并重命名Linux环境安......
  • Java基于springboot+vue开发服装商城小程序
    还可以改成其他商城哦。主要功能:用户可以浏览商品和特价商品,加入购物车,直接下单支付,在我的个人中心里可以管理自己的订单,收货地址,编辑资料等。管理员可以发布商品,上下架商品,处理订单。 演示视频:小程序https://www.bilibili.com/video/BV1rM411o7m4/?share_source=copy_web&vd_......
  • MediaPipe即将推出图像生成服务
    title:MediaPipe即将推出图像生成服务banner_img:https://cdn.studyinglover.com/pic/2023/08/b744863d78b3347dc0cfb23c7a0cd29d.pngindex_img:https://cdn.studyinglover.com/pic/2023/08/b744863d78b3347dc0cfb23c7a0cd29d.pngdate:2023-8-2320:42:00MediaPipe即将推......
  • 自定义springboot-starter 动态数据源
    自定义springboot-starter动态数据源如果使用的是spring或springboot框架,spring提供了一个实现动态数据源的一个抽象类AbstractRoutingDataSource当我们实现这个类后需要实现一个方法@OverrideprotectedObjectdetermineCurrentLookupKey(){}spring获取连接代码最终会......
  • apifox邮件模板
    ${ENV,var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志本邮件由系统自动发出,无需回复!各位同事,大家好,以下为${PROJECT_NAME}项目构建信息构建结果-${BUILD_STATUS}构建信息项目名称:${PROJECT_NAME}......
  • ElasticSearch之cat fielddata API
    命令样例如下:curl-XGET"https://localhost:9200/_cat/fielddata?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:idhostipnodefieldsizeNqk-6......