[解決済み] PLS-00103:次のいずれかを期待しているときに、記号"; "に遭遇しました。
質問
ピンリセット機能で使用するために、ユーザーのセキュリティ質問に対する答えを挿入しようとしています。
Ellucian banner v8+ はこれを実行するための API を提供していますが、私はその API について非常に不慣れで、以下のエラーメッセージを見る限り、これを正しく実行するには程遠い状態です。何か助けがあれば幸いです。
Oracle SQL Developerで実行してみました。
execute gb_pin_answer.p_create(
P_PIDM => 12345,
P_NUM => 1,
p_gobqstn_id => 1,
p_qstn_desc => '',
p_ansr_desc => 'David',
p_ansr_salt => 'A123B456',
p_user_id => 'W:H12345678',
p_data_origin => 'WWW_USER',
p_rowid_out OUT gb_common.internal_record_id_type
);
これは暗闇の中のショットですが、私はそれを試してみることを考えました、そのパッケージのp_create関数を実行しようとしたときに表示されるエラーメッセージ。
コマンドの15行目から始まるエラー: execute gb_pin_answer.p_create() エラーの報告です。ORA-06550: 1 行目、30 列目: PLS-00103: エ ンカウンターがあります。 シンボル ";".のいずれかを期待していたのに。
( ) - + case mod new not null table continue avg count 現在 存在する 最大 最小 事前 sql stddev 総和 分散 実行 マルチセット 先頭と末尾の両方 forall マージ 年 月 日 時 分秒 タイムゾーン_時間 タイムゾーン_分 タイムゾーン_地域 タイムゾーン_abbr 時間 タイムスタンプ間隔 日付 06550. 00000 - "行 %s、列 %s:\n%s" *原因 通常、PL/SQLのコンパイル・エラーです。 *対処法
コマンドの16行目から始まるエラーです。P_PIDM => 12345, Error のレポートを参照してください。不明なコマンド
コマンドの17行目から始まるエラーです。P_NUM => 1, Error report: 不明なコマンド
コマンドの18行目から始まるエラー: p_gobqstn_id => 1, Error report: 不明なコマンド
コマンドの19行目から始まるエラー: p_qstn_desc => '', Error という報告をしています。不明なコマンド
コマンドの20行目から始まるエラー: p_ansr_desc => 'David', Error のレポートを参照してください。不明なコマンド
コマンドの21行目から始まるエラー: p_ansr_salt => 'A123B456', エラー報告です。不明なコマンド
Error at line 22 in command: p_user_id => 'W:H12345678', エラー報告です。不明なコマンド
コマンドの23行目から始まるエラー: p_data_origin => 'WWW_USER'。 エラー報告です。不明なコマンド
コマンドの24行目から始まるエラー: p_rowid_out OUT gb_common.internal_record_id_type エラー報告です。不明なコマンド
コマンドの25行目から始まるエラー。) エラー報告です。不明なコマンド
ここで、このp_createという関数の使い方を読みました。 http://inb1.banner.ecu.edu:9090/api_erd_index_guide/api/general/gb_pin_answer.html#p_create
UPDATE: エラーになるコード。
SET SERVEROUTPUT ON
declare
l_rowid_out gb_common.internal_record_id_type;
BEGIN
gb_pin_answer.p_create(P_PIDM => 36706, P_NUM => 1, P_GOBQSTN_ID => 1, P_QSTN_DESC => '', P_ANSR_DESC => 'David', P_ANSR_SALT => 'HB123456', P_USER_ID => 'H00036657', P_DATA_ORIGIN => 'WWW_USER', P_ROWID_OUT => 1_rowid_out);
dbms_output.put_line('rowid: ' || l_rowid_out);
END;
エラーメッセージを表示します。
<ブロッククオートエラーの報告です。ORA-06550: 4 行目、199 列目: PLS-00363: 式 '1'. は代入対象として使用できません ORA-06550: 4 行目、3 列目。 PL/SQLです。ステートメントが無視されました 06550. 00000 - "行 %s、列 %s:\n%s" *原因 通常、PL/SQLのコンパイル・エラーです。 *対処法
解決方法は?
問題は
execute
. これは実際には短い匿名PL/SQLブロックの略記で、行をまたいで分割することはできません。(継続文字を使う場合は別ですが、それがうまくいったことがあるかどうか、すぐには思い出せません)。最初の行だけが翻訳され、事実上実行されようとしているのです。
begin execute gb_pin_answer.p_create(; end;
/
...そして、非常に合理的なことに、コマンドの最後が
p_create(;
. 残りの手続き呼び出しは、10個の別々のコマンドとして扱われ、その結果、他のエラーが発生します。
解決策としては、プロシージャコール全体を1行にまとめるか、読みづらくなりますが
execute
:
begin
gb_pin_answer.p_create(
...
);
end;
/
しかし、最後のパラメータは正しくありません。
OUT ...
に置き換える必要があります。
=> some_value
他のものと同じように。しかし、これはoutパラメータなので、値を入れるものが必要です。実行中のスクリプトの他の部分を見ないと、すでに対処されているかどうかはわかりませんが、このパターンでは、おそらく匿名ブロックに変数を追加するだけでよいでしょう。
set serveroutput on
declare
l_rowid_out gb_common.internal_record_id_type;
begin
gb_pin_answer.p_create(
...
p_rowid_out => l_rowid_out
);
-- optional
dbms_output.put_line('rowid: ' || l_rowid_out);
end;
/
関連
-
IntelliJ DataGrip Oracle 11gリモート接続の手順
-
Oracleの表領域と権限を徹底解説
-
Oracle Logminer クイックスタート詳細
-
オラクル・ラックのケーススタディ
-
[解決済み] ORA-01882: タイムゾーン領域が見つかりません。
-
[解決済み] ミリ秒を含む日付文字列に対するOracle to_date関数の使用
-
[解決済み] Oracleのテーブル名の最大長は?
-
[解決済み] ORA-30036: アンドゥ テーブルスペース 'UNDOTBS' でセグメントを 8 つ拡張できません。
-
[解決済み] oracle pl/sql DBMS_LOCK エラー
-
[解決済み] PL/SQLプロシージャ - SQLステートメント無視エラー
最新
-
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リモート接続の手順
-
Oracleの表領域と権限を徹底解説
-
オラクルのTO_DATEの使い方解説
-
Oracleのカンマ区切り文字列を複数行に分割したデータ例
-
Oracleで読み取り専用アカウントを作成する詳細手順
-
[解決済み】Oracle "SQL Error: Missing IN or OUT parameter at index:: 1" と表示されました。
-
[解決済み】Oracle Databaseで「SET DEFINE OFF」を使用するタイミングと理由
-
[解決済み] PLS-00103:次のいずれかを期待しているときに、記号"; "に遭遇しました。
-
[解決済み] ORA-01407:NULLに更新できません。