oracle - 作为 PL/SQL 中的参数的过程
问题描述
我想执行一个过程,该过程将另一个过程作为具有其他一些参数或参数的参数。例如
ProcA(Proc_B(Name Varchar2, ID Varchar2))
这可能吗?如果是这样,请建议我可能的解决方案。
解决方案
这是不可能的。
过程不直接返回值。这与返回值的函数不同。
所以你可以这样做:
ProcedureA( FunctionB( name, id ) )
(注意:这不是将函数作为参数传递,而是将函数的结果作为参数传递。)
像这样:
DECLARE
FUNCTION FunctionB(
name IN VARCHAR2,
id IN NUMBER
) RETURN VARCHAR2
IS
BEGIN
RETURN name || id;
END;
PROCEDURE ProcedureA(
value IN VARCHAR2
)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE( value );
END;
BEGIN
ProcedureA(
FunctionB(
name => 'A',
id => 1
)
);
END;
/
另一种方法是使用输出参数 fromProcedureA
和中间变量:
DECLARE
temp VARCHAR2(50);
PROCEDURE ProcedureB(
name IN VARCHAR2,
id IN NUMBER,
result OUT VARCHAR2
)
IS
BEGIN
result := name || id;
END;
PROCEDURE ProcedureA(
value IN VARCHAR2
)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE( value );
END;
BEGIN
ProcedureB(
name => :name,
id => :id,
result => temp
);
ProcedureA( temp );
END;
/
但是您不能将一个过程嵌套在调用另一个过程的调用中。
推荐阅读
- pandas - 将两个系列合并为数据框中的新系列?
- flutter - Flutter:扫描成功后关闭扫描仪
- python - Pandas - 在 1 个 csv 文件中读取不同的数据集
- javascript - 无法读取 null 错误的属性“innerHTML”。我的脚本在正文的末尾,为什么我仍然收到此错误?
- python - Windows 调度程序不会从主 python 调用其他 python 文件
- python - 使用两个键创建字典,其中两个键都必须满足才能检索值
- combine - 组合:用通知发布者替换 addObserver 时出现问题
- php - 将数据从登录控制器传递到 laravel 中的 login.blade.php
- laravel - Laravel File-Manager 上传后不显示预览图片
- ios - 对同一个 NSManagedObjectContext 对象的多个并发 perform() 调用