サーチ…


PL / SQLの割当モデル

すべてのプログラミング言語で変数に値を割り当てることができます。通常、左側に立つ変数に値が割り当てられます。現在のプログラミング言語での割り当て操作のプロトタイプは、次のようになります。

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文で行うことができます。このinstrunctionのプロトタイプを以下に見つけるでしょう:

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カーソルからカーソルの1行に1つのスカラー値または1組の列を戻す場合に使用されます。

参考文献:



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow