PLSQL 中的赋值模型

所有编程语言都允许我们为变量赋值。通常,将值分配给站在左侧的变量。任何当代编程语言中的整体赋值操作的原型如下所示:

left_operand assignment_operand right_operand instructions_of_stop

这会将右操作数分配给左操作数。在 PL / SQL 中,此操作如下所示:

left_operand := right_operand;

左操作数必须始终是变量。右操作数可以是值,变量或函数:

set serveroutput on
declare
  v_hello1 varchar2(32767);
  v_hello2 varchar2(32767);
  v_hello3 varchar2(32767);
  function hello return varchar2 is begin return 'Hello from a function!'; end;
begin
   -- from a value (string literal)
  v_hello1 := 'Hello from a value!';
   -- from variable
  v_hello2 := v_hello1;
  -- from function
  v_hello3 := hello; 

  dbms_output.put_line(v_hello1);
  dbms_output.put_line(v_hello2);
  dbms_output.put_line(v_hello3);
end;
/

在 SQL * Plus 中执行代码块时,在控制台中打印以下输出:

Hello from a value!
Hello from a value!
Hello from a function!

PL / SQL 中有一个功能允许我们分配从右到左。可以在 SELECT INTO 语句中执行。你将在下面找到这个功能的原型:

SELECT [ literal | column_value ]

INTO local_variable

FROM [ table_name | aliastable_name ]

WHERE comparison_instructions;

此代码将字符文字分配给局部变量:

set serveroutput on
declare
  v_hello varchar2(32767);
begin
  select 'Hello world!'
  into v_hello
  from dual;

  dbms_output.put_line(v_hello);
end;
/

在 SQL * Plus 中执行代码块时,在控制台中打印以下输出:

Hello world!

从右到左 的转换不是标准,但它对程序员和用户来说是有价值的功能。通常,当程序员在 PL / SQL 中使用游标时使用它 - 当我们想要从 SQL 游标返回一行游标中的单个标量值或一组列时,使用此技术。

进一步阅读: