oracle - 如何使用 oracle 中的 if else 条件从一个包中调用特定过程
问题描述
我有3个程序。我想在一个包中添加这 3 个过程,并调用该过程取决于 if else 条件 inplsql。
解决方案
这是您的问题的示例代码:
CREATE OR REPLACE PACKAGE MY_PACKAGE
AS
--You Can Comment below procedures if they are not needed out side of package and vice versa
--PROCEDURE PROCEDURE_1 (PARAM_1 IN VARCHAR2);
--PROCEDURE PROCEDURE_2 (PARAM_1 IN VARCHAR2);
--PROCEDURE PROCEDURE_3 (PARAM_1 IN VARCHAR2);*/
PROCEDURE CALLER (PARAM_1 IN VARCHAR2, CONDITION_1 IN CHAR);
END;
CREATE OR REPLACE PACKAGE BODY MY_PACKAGE
AS
PROCEDURE PROCEDURE_1 (PARAM_1 IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE ('PROCEDURE_1(' || PARAM_1 || ')');
END;
PROCEDURE PROCEDURE_2 (PARAM_1 IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE ('PROCEDURE_2(' || PARAM_1 || ')');
END;
PROCEDURE PROCEDURE_3 (PARAM_1 IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE ('PROCEDURE_3(' || PARAM_1 || ')');
END;
PROCEDURE CALLER (PARAM_1 IN VARCHAR2, CONDITION_1 IN CHAR)
AS
BEGIN
CASE (CONDITION_1)
WHEN '1'
THEN
PROCEDURE_1 (PARAM_1);
WHEN '2'
THEN
PROCEDURE_2 (PARAM_1);
WHEN '3'
THEN
PROCEDURE_3 (PARAM_1);
ELSE
DBMS_OUTPUT.PUT_LINE ('Unknown Condition: [' || CONDITION_1|| ']');
END CASE;
END;
END;
BEGIN
MY_PACKAGE.CALLER ('Hello World!', '1');
MY_PACKAGE.CALLER ('Hello World!', '2');
MY_PACKAGE.CALLER ('Hello World!', '3');
MY_PACKAGE.CALLER ('Hello World!', '4');
END;
输出:
PROCEDURE_1(HELLO WORLD!)
PROCEDURE_2(HELLO WORLD!)
PROCEDURE_3(HELLO WORLD!)
UNKNOWN CONDITION: [4]
推荐阅读
- hibernate - 如何为单个 JPQL 查询选择退出 @Where 过滤器?
- mongodb - mongodb中令人困惑的数据库分析器输出
- laravel - 将视频和音频上传到 laravel 5.8
- reactjs - React 组件在页面刷新时构造了两次
- angular - 如何限制角度cli中不需要的路线?
- kubernetes - 在某些时候,Grafana 仪表板上未显示指标
- c++ - 从向量中删除元素时出现未处理的异常
- javascript - ArcGis JS API 4.11、4.12 不正确的工作 GraphicsView2D(来自 esri/views/2d/layers/grapics/GraphicsView2D)hitTest 方法
- javascript - 使用 N/A 值对动态列进行排序
- asp.net-core - 如何在 ASP.NET Kestrel 服务器中设置 TCP 积压