oracle - 调用oracle过程而不放置所有参数
问题描述
我正在使用看起来像这样的 oracle 程序
CREATE PROCEDURE spName (
pCurosr OUT refcursor,
par2 IN VARCHAR := NULL,
....
....
par98 IN VARCHAR := NULL,
error OUT NUMBER
) AS
BEGIN
....
....
END
问题是,一些程序采用了太多的参数,这些参数已经设置为 NULL 作为默认值。我想知道的是,是否可以像这样执行程序?
exec spName(:refcur, :par5 = 'value', :error);
仅将我想要的供应参数和所有其他参数设置为默认值。
解决方案
例如,使用这样的过程
create or replace procedure testProc ( pOut OUT number,
pIn1 IN number := null,
pIn2 IN number := null,
pIn3 IN number := null,
pIn4 IN number := null
) is ...
您可以使用命名参数赋值:
declare
vOut number;
begin
testProc (pOut => vOut,
pIn3 => 3
);
end;
未命名的参数将采用默认值。
命名参数的顺序在这里并不重要,所以你可以这样做,例如,
testProc (pIn1 => 1,
pOut => vOut,
pIn3 => 3
);
推荐阅读
- c++ - 从范围访问变量
- javascript - 在反应组件中渲染整个 html 文件
- linux - Linux如何为文件缓存分配内存?
- go - 你如何在 Golang 中模拟类型中的类型?
- json - Swift ObjectMapper:如何用反斜杠解析 JSON
- javascript - Django 和 JavaScript:过滤不工作暂停异常
- reactjs - 为什么我在错误中得到空白页,但其他人没有
- r - 合并两个data.frames与r中同一列中的数字和字符
- javascript - 为什么 Promise 中的方法没有括号?
- mysql - 没有限制的 MySQL SELECT 查询