[解決済み] ORA-01747:user.table.column, table.column, または column の指定が無効です。
質問
ループ内でexecute immediateを呼び出すと、上記のエラーが発生する。
Update CustomersPriceGroups set 1AO00=:disc Where cuno=:cuno
Parameters: disc=66 cuno=000974
Update CustomersPriceGroups set 1AP00=:disc Where cuno=:cuno
Parameters: disc=70.5 cuno=000974
Update CustomersPriceGroups set 1AQ00=:disc Where cuno=:cuno
Parameters: disc=66 cuno=000974
Update CustomersPriceGroups set 1ZA00=:disc Where cuno=:cuno
Parameters: disc=60 cuno=000974
これはどういう意味ですか?
以下はそのコードです。
c:=PriceWorx.frcPriceListCustomers('020','221');
LOOP
fetch c into comno,cuno,nama,cpls;
exit when c%notfound;
dbms_output.put_Line(cuno);
g:=priceWorx.frcPriceListItemGroups('020','221');
d:=priceworx.frcCustomerDiscounts('020','221',cuno);
loop
fetch g into comno,cpgs,n;
fetch d into comno,cpls,cuno,cpgs,stdt,tdat,qanp,disc,src;
--dbms_output.put(chr(9)||cpgs);
sQ:='Update saap.CustomersPriceGroups set "'|| trim(cpgs)||'"=:disc '
|| ' Where cuno=:cuno';
execute immediate sQ using disc,cuno;
commit;
dbms_output.put_line( sQ );
dbms_output.put_line( chr(9)||'Parameters: disc='|| disc||' cuno='||cuno);
exit when g%notfound;
end loop;
close g;
close d;
end loop;
解決方法は?
引用されていない識別子は、アルファベットで始めなければなりません (
ルール6
). 数字で始まる名前を持つカラムに値を代入しようとしています。
1AO00
,
1AP00
などです。
のテーブル定義を見ずに
CustomersPriceGroups
そのような名前のカラムがあるかどうかはわかりません。もしあるのなら、それらは引用符で囲まれた識別子として作成されているはずです。その場合、(どこでも)引用符で囲んで参照しなければなりませんが、これは理想的ではありません。同じページのOracleでさえもです。
注:オラクルでは、引用符で囲まれた識別子をデータベース オブジェクト名です。これらの引用符で囲まれた識別子は、SQL*Plus では受け入れられますが を管理する他のツールを使用する場合、有効でない可能性があります。 オブジェクトを作成します。
このコードでは、引用符を使って
sQ
しかし、あなたが示した出力はそうではありません。
saap.
スキーマ識別子も同じです。それは、あなたが考えているコードのバージョンを実行していないからかもしれません。
の出力が表示されないのは、データを貼り付ける代わりに再入力した場合に失われるからです。
c.cuno
もあります。でも、例えばカラム名の大文字と小文字を間違えている可能性もありますね。
もし
execute
デバッグはその後に行われるため、ループ内でそのコマンドが実行されるのを見ることはできません - 正常な値を見ているのであって、壊れている値を見ているのではありません。関数から返されるすべての値をチェックする必要があります。
g
が返す値は
cpgs
というのは、実は有効なカラム名ではありません。
ninesided が言うように、より多くの情報、特に完全な例外メッセージを表示することで、何が間違っているのかを特定するのに役立ちます。
関連
-
OracleインストールTNS_ADMIN環境変数設定リファレンス
-
オラクルにおけるNEXTVALの事例を解説
-
PLSQL14ダウンロードとインストールチュートリアル
-
オラクル・ラックのケーススタディ
-
オラクルのTO_DATEの使い方解説
-
[解決済み】Oracle "SQL Error: Missing IN or OUT parameter at index:: 1" と表示されました。
-
[解決済み] ORA-01882: タイムゾーン領域が見つかりません。
-
[解決済み] Oracleで変数を宣言して表示する方法
-
[解決済み] 外部キーの追加エラー。ORA-02298: 検証できません - 親キーが見つかりませんでした
-
[解決済み] ORA-01747:user.table.column, table.column, または column の指定が無効です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IntelliJ DataGrip Oracle 11gリモート接続の手順
-
オラクルデータベースに付属するすべてのテーブル構造を説明する(sqlコード)
-
PLSQLDeveloper14を使用したOracle11gへの接続手順を詳しく伝授
-
Oracleにリモート接続するためのPLSQLDeveloperログイン
-
ORACLE 当座預金に関する情報を見る
-
Oracle 11gのダウンロード、インストール、グラフィックチュートリアルを使用します。
-
plsqlを使用してリモートOracleデータベースに接続する複数の方法
-
[解決済み】ソケットから読み込むデータがなくなるエラー
-
[解決済み] ORA-29283: 無効なファイル操作 ORA-06512: "SYS.UTL_FILE", 行 536 で。
-
[解決済み] このPL/SQLは何が問題なのでしょうか?バインド変数 * が DECLARED ではありません。