[解決済み] PLS-00382: 式が不正です。
質問
というプロシージャが定義されています。
create or replace
PACKAGE BODY PKG_BG_PRVDR_SCOPE_GROUP
AS
g_return_code NUMBER := 99;
g_return_text VARCHAR2(500) := '';
g_return_desc VARCHAR2(500) := '';
c_return_length CONSTANT NUMBER := 500;
g_revision_frozen NUMBER := -459;
g_timestamp_error NUMBER := -86;
c_invalid_row_count CONSTANT VARCHAR2(100) := 'database integrity check failed';
revision_frozen EXCEPTION;
duplicate_item EXCEPTION;
invalid_row_count EXCEPTION;
invalid_update_ts EXCEPTION;
PROCEDURE update_bg_provider_scope_group
(
p_region_id IN bg_prvdr_scope_group.region_id%TYPE,
p_revision_id IN bg_prvdr_scope_group.revision_id%TYPE,
p_bg_revision_id IN bg_prvdr_scope_group.bg_revision_id%TYPE,
p_classification_id IN bg_prvdr_scope_group.classification_id%TYPE,
p_facility_id IN bg_prvdr_scope_group.facility_id%TYPE,
p_user IN bg_prvdr_scope_group.create_user_id%TYPE,
p_current_timestamp IN bg_prvdr_scope_group.create_ts%TYPE,
p_group_name IN bg_prvdr_scope_group.group_nm%TYPE,
p_description IN bg_prvdr_scope_group.description%TYPE,
p_prvdr_scope_grp_id IN bg_prvdr_scope_group.provider_group_id%TYPE,
p_ora_rowscn IN NUMBER,
p_cur_out OUT g_cursor
)
IS
lv_count_name NUMBER(10) := 0;
lv_count NUMBER(10) := 0;
lv_last_update_user_id VARCHAR2(30) := '';
lv_user_first_and_last_nm VARCHAR2(100) := '';
lv_current_ts TIMESTAMP(6) WITH TIME ZONE;
lv_ora_row_scn NUMBER;
lv_error_desc VARCHAR2(300) := NULL;
BEGIN
DBMS_OUTPUT.PUT_LINE('1');
実行すると、次のようなエラーが発生します。 データベース SA_Sandbox4 に接続中です。 ORA-06550: 25 行目、19 列目。 PLS-00382: 式が間違ったタイプです。 ORA-06550: 25 行目、3 列目。 PL/SQLです。ステートメント無視 プロセスが終了しました。 データベース SA_Sandbox4 との接続を解除します。
Beginに入らない...
で実行する。
DECLARE
P_REGION_ID NUMBER;
P_REVISION_ID NUMBER;
P_BG_REVISION_ID NUMBER;
P_CLASSIFICATION_ID NUMBER;
P_FACILITY_ID VARCHAR2(10);
P_USER VARCHAR2(30);
P_CURRENT_TIMESTAMP TIMESTAMP;
P_GROUP_NAME VARCHAR2(50);
P_DESCRIPTION VARCHAR2(255);
P_PRVDR_SCOPE_GRP_ID NUMBER;
P_ORA_ROWSCN NUMBER;
P_CUR_OUT SA_SANDBOX4.PKG_BG_PRVDR_SCOPE_GROUP.g_cursor;
BEGIN
P_REGION_ID := 51;
P_REVISION_ID := 1;
P_BG_REVISION_ID := 1;
P_CLASSIFICATION_ID := 1;
P_FACILITY_ID := 'GIL';
P_USER := 'a12345';
P_CURRENT_TIMESTAMP := localtimestamp;
P_GROUP_NAME := 'modificationtest';
P_DESCRIPTION := 'modified successfully';
P_PRVDR_SCOPE_GRP_ID := 42;
P_ORA_ROWSCN := localtimestamp;
PKG_BG_PRVDR_SCOPE_GROUP.UPDATE_BG_PROVIDER_SCOPE_GROUP(
P_REGION_ID => P_REGION_ID,
P_REVISION_ID => P_REVISION_ID,
P_BG_REVISION_ID => P_BG_REVISION_ID,
P_CLASSIFICATION_ID => P_CLASSIFICATION_ID,
P_FACILITY_ID => P_FACILITY_ID,
P_USER => P_USER,
P_CURRENT_TIMESTAMP => P_CURRENT_TIMESTAMP,
P_GROUP_NAME => P_GROUP_NAME,
P_DESCRIPTION => P_DESCRIPTION,
P_PRVDR_SCOPE_GRP_ID => P_PRVDR_SCOPE_GRP_ID,
P_ORA_ROWSCN => P_ORA_ROWSCN,
P_CUR_OUT => P_CUR_OUT
);
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('P_CUR_OUT = ' || P_CUR_OUT);
*/
:P_CUR_OUT := P_CUR_OUT; --<-- Cursor
END;
解決方法は?
匿名ブロックの25行目は、以下のように表示されます。
P_ORA_ROWSCN := localtimestamp;
P_ORA_ROWSCN
が定義されています。
NUMBER
.
localtimestamp
が返されます。
TIMESTAMP
. からの暗黙の変換はありません。
TIMESTAMP
を
NUMBER
で、変換に失敗します。 を初期化するために何を使いたいのか、私には明らかではありません。
P_ORA_ROWSCN
. 通常であれば、それは
ORA_ROWSCN
の擬似カラムは、特定のテーブルの特定の行の擬似カラムです。 しかし、もしかしたら
dbms_flashback.get_system_change_number
? あるいは
ROWSCN
が、実際にはOracleのシステム変更番号(SCN)を意味しているわけではありません。
ちなみに、投稿されたパッケージの定義はコンパイルできません。
g_cursor
のように、パッケージで定義されていないものがあります。 もしかして、パッケージの定義を投稿するときに、それを削除したのですか? 匿名ブロックでは、その型がそのパッケージで宣言されていることを期待しているようですから。
関連
-
OracleインストールTNS_ADMIN環境変数設定リファレンス
-
オラクルはADGとDGのケースを詳細に区別している
-
Oracleの表領域と権限を徹底解説
-
オラクルストアドプロシージャの事例を解説
-
Navicat PremiumツールでOracleデータベースをMySQLに移行する
-
Oracle TriggersとCursorsを高速に学ぶ
-
[解決済み】ソケットから読み込むデータがなくなるエラー
-
[解決済み] ORA-29913: Oracle に csv を挿入する際の ODCIEXTTABLEOPEN コールアウトの実行でエラーが発生しました。
-
[解決済み] ORA-01849: 時間は 1 から 12 の間でなければなりません。
-
[解決済み] 外部キーの追加エラー。ORA-02298: 検証できません - 親キーが見つかりませんでした
最新
-
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 Sqlplusコマンドログイン複数方法ケーススタディ
-
オラクルインデックス概要
-
オラクルストアドプロシージャの事例を解説
-
Oracleで読み取り専用アカウントを作成する詳細手順
-
Oracle 11g R2 インストールチュートリアル フルバージョン
-
[解決済み] ORA-01465: BLOB を使用しているとき、Oracle の 16 進数が無効です。
-
[解決済み] Oracleのテーブル名の最大長は?
-
[解決済み] ORA-04021: オブジェクトのロック待ちでタイムアウトが発生しました。
-
[解決済み] 1行のみ追加 "ORA-02290: チェック制約 (SYS_C0012762) 違反 ORA-01403: データが見つかりません"