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.