E-Lin通用微服务平台-Oracle存储过程注册Restful API服务(一)

        Oracle SQL脚本注册Restful API服务,只适用于简单的查询,在以往Oracle EBS开发中,经常遇到比较复到的查询,比如将查询的部分数据存放在临时表中,或者5张以上的表或视图关联查询,Oracle SQL脚本注册Restful API服务无法满足,需求开发存储过程,通过输出参数返回游标。因此,需要支持Oracle存储程序注册Restful API服务。
一、创建存储过程
Oracle存储过程代码如下:

CREATE OR REPLACE PROCEDURE Cux_Query_Data(x_Cursor_Person OUT SYS_REFCURSOR
                                          ,x_Cursor_User   OUT SYS_REFCURSOR
                                          ,x_Result        OUT VARCHAR2) IS
BEGIN
  OPEN x_Cursor_User FOR
    SELECT Id
          ,NAME
          ,Pinyin
      FROM Crm_User t
     WHERE t.Pinyin = 'chenxianping';
  OPEN x_Cursor_Person FOR
    SELECT Email
          ,Login_Name
          ,Sex
      FROM Oa_Sys_Org_Person t
     WHERE t.Login_Name = 'chenxianping';
  x_Result := '成功查询!';
EXCEPTION
  WHEN OTHERS THEN
    x_Result := '操作失败:' || SQLERRM;
END Cux_Query_Data;

存储过程二个游标输出参数和一个字符串出输参数。

二、存储过程注册Restful API服务
存储过程注册Restful API服务比SQL脚本注册Restful API服务简单方便许多,只需要注册通用Restful API对象,存储过程的参数该系统自动添加,节省75%~90%以上工作量
请求URL:http://localhost:6602/db/api/apiobject/add
请求方法:POST
请求报文参考如下

{
    "apiCode": "OA_QUERY_ORG_USER",
    "description": "查询OA组织架构用户相关信息",
    "owner": "CRM",
    "packageName": "",
    "objectName": "CUX_QUERY_DATA",
    "overLoad": "",
    "dataObjectType": 2,
    "dataSourceName": "ELIN_CRM"
}

请求响应报文参考如下:

{
    "success": true,
    "message": "New success!",
    "code": 200,
    "timestamp": 1613549733369,
    "result": {
        "apiId": 43,
        "apiCode": "OA_QUERY_ORG_USER",
        "description": "查询OA组织架构用户相关信息",
        "owner": "CRM",
        "packageName": "",
        "objectName": "CUX_QUERY_DATA",
        "overLoad": "",
        "dataObjectType": 2,
        "callScripts": "{call CRM.CUX_QUERY_DATA(:1,:2,:3)}",
        "dataSourceId": 2,
        "serviceId": null,
        "enabledFlag": true,
        "queryResultFlag": false,
        "dataSourceName": "ELIN_CRM",
        "dataBaseType": 1,
        "argumentCount": 3,
        "sequenceName": "CRM_COMMMON_IFACE_S"
    }
}

操作实例图片参考如下:

三、获得调用通用Restful API服务请求报文格式
请求URL:http://localhost:6602/db/api/exmaple/OA_QUERY_ORG_USER
请求方法:GET
请求响应报文参考如下:

{
    "xCursorPerson": null,
    "xCursorUser": null,
    "xResult": null
}

操作实例图片参考如下:

四、调用Restful API服务OA_QUERY_ORG_USER
请求URL:http://localhost:6602/db/api/callapi?apiCode=OA_QUERY_ORG_USER
请求方法:POST
请求报文参考如下:

{
    "xCursorPerson": null,
    "xCursorUser": null,
    "xResult": null
}

请求响应报文参考如下:

{
    "success": true,
    "message": "success",
    "code": 200,
    "timestamp": 1613550604584,
    "result": {
        "xCursorPerson": [
            {
                "loginName": "chenxianping",
                "sex": "M",
                "email": "chenxianping@elin.net"
            }
        ],
        "xCursorUser": [
            {
                "pinyin": "chenxianping",
                "name": "陈显平",
                "id": 687451
            }
        ],
        "xResult": "成功查询!"
    }
}

操作实例图片参考如下:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlanChen

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值