=> 在 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 表中

从XML到Oracle PL / SQL环境中的路径列表

Oracle PL/SQL表记录类型

pl/sql程序,Oracle作用域问题

pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下

pl/sql使用技巧