plsql-stored-procedure ORA-06550 エラー処理
2022-02-13 15:55:46
先日、ストアドプロシージャを書いたところ、以下のようなエラーが発生しました。
ORA-06550: 1 行目、7 列目: PLS-00905: オブジェクト SZXFJF.update_flag は無効です。
ORA-06550: 1 行目、7 列目: PL/SQL: ステートメントが無視されました
ORA-06550: 1 行目、7 列目: PL/SQL: ステートメントが無視されました
プロシージャの作成または置換 update_flag
(date_f in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type.DATE_f in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type, --Error 1, このテーブルはライブラリに存在しません。
date_l in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type)
は
始める
drop table dz_resultfromboss_dz_tmp; --エラー2、SQL文の実行時にはexecute immediateを使用する必要があります。 ' drop table dz_resultfromboss_dz_tmp ';
(date_f in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type.DATE_f in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type, --Error 1, このテーブルはライブラリに存在しません。
date_l in dz_resultfromboss_dz_tmp.SCPDATEANDTIME%type)
は
始める
drop table dz_resultfromboss_dz_tmp; --エラー2、SQL文の実行時にはexecute immediateを使用する必要があります。 ' drop table dz_resultfromboss_dz_tmp ';
dbms_output.put_line('table dropped!!!') ;
テーブルdz_resultfromboss_dz_tmpを作成します。
as select substr(SEQUENCE,5,28) "SEQUENCE" ,
CHECKRESULTFLAG dz_resultfromboss_dz dz1より
ここで dz1.innetcode=006
およびdz1.SCPDATEANDTIME>=date_f
とdz1.SCPDATEANDTIME<date_l.を比較します。
dbms_output.put_line('table created!!!') ;
dz_resultfromboss_dz_tmp_idx on dz_resultfromboss_dz_tmp(SEQUENCE) を作成します。
dbms_output.put_line('index created!!!') ;
update sj_fileprocresult_0803 sj
set sj.dzstatus = (SELECT dz1.Checkresultflag)
dz_resultfromboss_dz_tmp dz1より
ここで、sj.sequence=dz1.sequence) ;
コミットします。
dbms_output.put_line('table updated!!!') ;
update_flagを終了します。
テーブルdz_resultfromboss_dz_tmpを作成します。
as select substr(SEQUENCE,5,28) "SEQUENCE" ,
CHECKRESULTFLAG dz_resultfromboss_dz dz1より
ここで dz1.innetcode=006
およびdz1.SCPDATEANDTIME>=date_f
とdz1.SCPDATEANDTIME<date_l.を比較します。
dbms_output.put_line('table created!!!') ;
dz_resultfromboss_dz_tmp_idx on dz_resultfromboss_dz_tmp(SEQUENCE) を作成します。
dbms_output.put_line('index created!!!') ;
update sj_fileprocresult_0803 sj
set sj.dzstatus = (SELECT dz1.Checkresultflag)
dz_resultfromboss_dz_tmp dz1より
ここで、sj.sequence=dz1.sequence) ;
コミットします。
dbms_output.put_line('table updated!!!') ;
update_flagを終了します。
上記のストアドプロシージャを以下のように変更します。
<スパン
プロシージャの作成または置換 update_flag
(date_f in dz_resultfromboss_dz.SCPDATEANDTIME%type, date_l in dz_resultfromboss_dz.SCPDATEANDTIME%type)
は
始める
immediate 'drop table dz_resultfromboss_dz_tmp' を実行します。
(date_f in dz_resultfromboss_dz.SCPDATEANDTIME%type, date_l in dz_resultfromboss_dz.SCPDATEANDTIME%type)
は
始める
immediate 'drop table dz_resultfromboss_dz_tmp' を実行します。
dbms_output.put_line('table dropped!!!') ;
即座に実行 'create table dz_resultfromboss_dz_tmp
as select substr(SEQUENCE,5,28) "SEQUENCE" ,
CHECKRESULTFLAG dz_resultfromboss_dz dz1より
ここで dz1.innetcode=006
およびdz1.SCPDATEANDTIME>=date_f
とdz1.SCPDATEANDTIME<date_l' があります。
dbms_output.put_line('table created!!!') ;
即座に実行 'create index dz_resultfromboss_dz_tmp_idx on dz_resultfromboss_dz_tmp(SEQUENCE)' とします。
dbms_output.put_line('index created!!!') ;
即座に実行 'update sj_fileprocresult_0803 sj
set sj.dzstatus = (SELECT dz1.Checkresultflag)
dz_resultfromboss_dz_tmp dz1より
where sj.sequence=dz1.sequence)' ;
コミットします。
dbms_output.put_line('table updated!!!') ;
update_flagを終了します。
即座に実行 'create table dz_resultfromboss_dz_tmp
as select substr(SEQUENCE,5,28) "SEQUENCE" ,
CHECKRESULTFLAG dz_resultfromboss_dz dz1より
ここで dz1.innetcode=006
およびdz1.SCPDATEANDTIME>=date_f
とdz1.SCPDATEANDTIME<date_l' があります。
dbms_output.put_line('table created!!!') ;
即座に実行 'create index dz_resultfromboss_dz_tmp_idx on dz_resultfromboss_dz_tmp(SEQUENCE)' とします。
dbms_output.put_line('index created!!!') ;
即座に実行 'update sj_fileprocresult_0803 sj
set sj.dzstatus = (SELECT dz1.Checkresultflag)
dz_resultfromboss_dz_tmp dz1より
where sj.sequence=dz1.sequence)' ;
コミットします。
dbms_output.put_line('table updated!!!') ;
update_flagを終了します。
概要
1. このエラーは一般的に書き込みエラーです。
2. ライブラリテーブルの有効性チェックに注意を払う
3、ddlステートメントの最後の使用
即時実行
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
ERROR 1136 (21S01) を解決してください。列の数が Mysql の行 1 の値の数と一致しません。
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
MySQL】1136 - 列数が1行目の値数と一致しない問題を解決
-
MySQL - ストアドプロシージャ (データ型、関数)
-
executeQuery()ソリューションでデータ操作文を発行できない。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例