PL/SQLでSELECT...INTO文を使用する例

単一行のデータを取得するには、SELECT... INTO文を使用します。1行も返さないか、または複数の行を返す問合せに対して、TimesTenはエラーを返します。

この項では、次の例を示します。

SELECT... INTOを使用した給与合計の取得

この例では、SELECT...INTO文を使用して、department_idが60の部門のすべての従業員の給与合計を計算します。

Command> DECLARE
           v_sum_sal  NUMBER (10,2);
           v_dept_no  NUMBER NOT NULL := 60;
         BEGIN
           SELECT SUM(salary) -- aggregate function
           INTO v_sum_sal FROM employees
           WHERE department_id = v_dept_no;
           DBMS_OUTPUT.PUT_LINE ('Sum is ' || v_sum_sal);
          END;
          /
Sum is 28800
 
PL/SQL procedure successfully completed.

SELECT...INTOを使用した他のユーザーの表への問合せ

次の例では、USER1およびUSER2の2人のユーザーで、1人のユーザーがSELECT...INTOを使用してもう1人のユーザーの表に問い合せる方法を示しています。

次の権限を想定します。

grant create session to user1;
grant create session to user2;
grant create table to user1;
grant select on user1.test to user2;

USER1:

Command> create table test(name varchar2(20), id number);
Command> insert into test values('posey', 363);
1 row inserted.

USER2:

Command> declare
            targetid number;
         begin
            select id into targetid from user1.test where name='posey';
            dbms_output.put_line('Target ID is ' || targetid);
         end;
         /
Target ID is 363
 
PL/SQL procedure successfully completed.