...少なくとも私はそれが問題だと思います。予約語NUMBERが、カーソル宣言でエラーを引き起こす列名として使用されました
私は、列の1が予約語NUMBER(ええ、私は知っている。)であるテーブルにアクセスするカーソル宣言が含まれている機能を書いています。
エラー(16,10):PL/SQL:ORA-06552:PL/SQL:コンパイル単位分析が終了しましたORA-06553:PLS-488:無効な変数宣言:オブジェクト ' NUMBER」のタイプまたはサブタイプ
MYコードのようなものに見えている必要があります。それが問題であることを確認するために
CURSOR my_cur
IS
SELECT "NUMBER", col2, col3
FROM tb1_x;
を、私は
CURSOR my_cur
IS
SELECT 'NUMBER', 'col2', 'col3'
FROM dual;
にコードを変更し、それは大丈夫コンパイル明らかにそれは私が望むものではありません。
残念ながら、私は(ため息)列名を変更するオプションを持っていない、とレコードの
SELECT "NUMBER", col2, col3
FROM tb1_x;
は、通常のSQLの実行でOK動作します。
とにかく私はこの問題を回避できますか?どんな助けでも大歓迎です!
ここにストローで把握...しかし、あなたは、 'NUMBER'として「NUMBER」を選択するか、'そのようなNUMBER''か何か」として「NUMBER」を選択して試してみましたか? – gangreen
@gangreen私はそれが動作するとは思わない..実際には、テーブルtb1_xが使用されている限り、カーソル宣言はコンパイル時に失敗し、犯人列「NUMBER」が全くアクセスされていなくても。以下のように失敗します: 'CURSOR my_cur IS SELECT col2、col3 FROM tb1_x;' – alchn
私はこの問題を解決します。犯人テーブルを囲むようにビューを作成して、ビューのNBRとして列 "NUMBER"の名前を変更します。次に、元の表や「NUMBER」に言及せずに、ビューと列NBRを使用してカーソルを宣言できます。コンパイルして正常に動作しました。 – alchn