=> 在 oracle pl sql.is 和调用运算符中是啥意思?
Posted
技术标签:
【中文标题】=> 在 oracle pl sql.is 和调用运算符中是啥意思?【英文标题】:what does => mean in oracle pl sql.is it and invoking operator?=> 在 oracle pl sql.is 和调用运算符中是什么意思? 【发布时间】:2014-08-21 09:56:39 【问题描述】:我有一个代码:OPEN c_data (p_id => 1);
=>
运算符在 PL/SQL
是调用运算符还是赋值运算符
【问题讨论】:
查看手册:docs.oracle.com/cd/E11882_01/appdev.112/e25519/… 【参考方案1】:=>
在过程或函数调用中用于按名称执行参数分配。假设我们有一个定义为:
PROCEDURE XYZ(pParm1 IN NUMBER, pParm2 IN NUMBER, pOutput OUT NUMBER);
我们想要调用它。一种方法是按照声明的顺序传递参数,如:
XYZ(10, 20, nOut);
另一种我觉得更清楚的方法是使用=>
运算符直接显示分配给每个参数的值:
XYZ(pOutput => nOut, pParm1 => 20, pParm2 => 40);
请注意,如果您使用=>
运算符为每个参数分配值,则不必按照参数在过程中声明的顺序传递参数。
如果编译运行下面的例子:
declare
nOut NUMBER;
PROCEDURE XYZ(pParm1 IN NUMBER, pParm2 IN NUMBER, pOutput OUT NUMBER) IS
BEGIN
pOutput := pParm1 * pParm2;
END XYZ;
begin
-- Test statements here
XYZ(10, 20, nOut);
DBMS_OUTPUT.PUT_LINE('After call 1, nOut=' || nOut);
XYZ(pOutput => nOut, pParm1 => 20, pParm2 => 40);
DBMS_OUTPUT.PUT_LINE('After call 2, nOut=' || nOut);
end;
您会发现它会产生以下输出:
After call 1, nOut=200
After call 2, nOut=800
我发现按名称传递值在以下几种情况下特别有用:
-
您有一个包含大量参数的过程,其中难以理解与每个参数关联的参数值,或者
您有一个过程,它的大部分或所有参数都具有默认值,并且只想传入那些您的值与默认值不同的参数。
分享和享受。
【讨论】:
以上是关于=> 在 oracle pl sql.is 和调用运算符中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 PL/SQL 的输出(XML)存储在 oracle 表中