什么=>意思是在oracle pl sql.is它和调用运算符?

时间:2014-08-21 09:56:39

标签: oracle plsql

我有一个代码:OPEN c_data (p_id => 1);

=>运算符在 PL / SQL

中的含义

是一个调用运算符或赋值运算符

1 个答案:

答案 0 :(得分:2)

=>用于过程或函数调用,以按名称执行参数分配。我们假设我们的程序定义为:

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

我发现按名称传递值在以下几种情况下特别有用:

  1. 您的程序包含大量参数,而且很难理解哪个参数值与每个参数相关联,或者
  2. 您有一个过程,其中包含大部分或全部参数的默认值,并且只想传递您的值与默认值不同的参数。
  3. 分享并享受。