私はテーブル列の行タイプのタイプによって作成された連想配列を持っています。PL/SQLでNULL結合配列がチェックされていないのはなぜですか?
例を与えることは、これは(テーブル名が異なっているが、構造は同じである)である方法です:
これは、テーブルのDDLです
CREATE TABLE employees
(
id NUMBER,
name VARCHAR2(240),
salary NUMBER
);
はここで何をだ私手順はやっている:
DECLARE
TYPE table_of_emp
IS TABLE OF employees%ROWTYPE INDEX BY BINARY_INTEGER;
emp TABLE_OF_EMP;
BEGIN
IF emp IS NULL THEN
dbms_output.Put_line('Null associative array');
ELSE
dbms_output.Put_line('Not null');
END IF;
END;
私はこの
が「ヌル連想配列」の結果が印刷されている必要がありますと仮定します。ただし、条件が失敗し、else部分にジャンプします。 PL/SQL:私はコレクションは
DECLARE
TYPE table_of_emp
IS TABLE OF employees%ROWTYPE INDEX BY BINARY_INTEGER;
emp TABLE_OF_EMP;
BEGIN
IF emp IS NULL THEN
dbms_output.Put_line('Null associative array');
ELSE
dbms_output.Put_line('Not null');
FOR i IN emp.first..emp.last LOOP
dbms_output.Put_line('Emp name: '
|| Emp(i).name);
END LOOP;
END IF;
END;
値印刷するfor
ループに入れた場合
は今、プログラム単位は、ループラインの
ORA-06502を参照し、例外を発生させます:数値または値のエラー
NULL結合配列のためです。 NULL結合配列のためにエラーが発生していますか?
なぜ最初のチェックが失敗するのですか?私は間違って何をしていますか?
データベース・サーバーは、Oracleの11グラムEE(バージョン11.2.0.3.0 64ビット)
私はしばらくPLSQLをしますが、あなたのforループ内( 'DBMS_OUTPUT.PUT_LINE(していない「のemp名:」 Emp(i).name); ')は' Emp(i).name'を 'emp(i).name'とすべきですか? –
@jschoen変数名は大文字と小文字を区別しないので、意味はありません。 – Sathya