[解決済み] PLS-00306:Oracle SP の呼び出しで引数の数または種類が誤っている。
2022-02-09 20:12:12
質問事項
以下のコードを実行しようとしています。
SP
と表示され、以下のようなエラーが発生します。
CREATE OR REPLACE PROCEDURE denodo.CLEAR_INDEX
( INDEX_NAME1 IN VARCHAR2,
INDEX_NAME2 IN VARCHAR2,
IT_WORKED OUT BOOLEAN ) as
BEGIN
IT_WORKED := FALSE;
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME1;
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME2;
IT_WORKED := TRUE;
EXCEPTION
WHEN OTHERS THEN
IT_WORKED := FALSE;
END CLEAR_INDEX;
CLEAR_INDEX#0 [JDBC ROUTE] [ERROR] メッセージ 'ORA-06550: line 1, column 7.で例外を受信しました。 PLS-00306: 'CLEAR_INDEX'の呼び出しで引数の数または種類が正しくありません。 ORA-06550: 1 行目、7 列目。 PL/SQLです。ステートメントが無視されました。
どうなっているのでしょうか、よろしくお願いします。
解決方法は?
このエラーは、一般的に
BOOLEAN
というデータ型を
OUT
パラメータを使用し、それを印刷したり、他の Oracle 組み込みパッケージで何らかの操作を行おうとした場合。を直接使用することはできません。
BOOLEAN
のデータ型は
dbms_output.put_line
またはその他の
DBMS
パッケージを使用します。例えば
OUT
パラメータを使用する必要があります。
sys.diutil.bool_to_int
.
以下の例は、以下のように実行しようとしたときに直面するエラーを示しています。
DECLARE
inx VARCHAR2(100):='ABC';
var BOOLEAN;
BEGIN
CLEAR_INDEX(INDEX_NAME1=>inx ,IT_WORKED =>var);
dbms_output.put_line(var);
END;
問題に直面するのです。
ORA-06550: line 6, column 3:
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
ORA-06550: line 6, column 3:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action
この問題を解決するには、以下のように実行する必要があります。
DECLARE
inx VARCHAR2(100):='ABC';
var BOOLEAN;
var1 varchar2(10);
BEGIN
CLEAR_INDEX(INDEX_NAME1=>inx ,IT_WORKED =>var);
var1:=CASE WHEN (sys.diutil.bool_to_int(var)) = 1 THEN 'TRUE'
WHEN (sys.diutil.bool_to_int(var)) = 0 THEN 'FALSE'
END;
dbms_output.put_line(var1);
END;
出力します。
anonymous block completed
関連
-
Oracle Dbeaver ストアドプロシージャの構文説明
-
IntelliJ DataGrip Oracle 11gリモート接続の手順
-
Oracleデッドロック検出クエリとその処理
-
オラクルユーザー作成プロセスの説明
-
Navicat PremiumツールでOracleデータベースをMySQLに移行する
-
Oracle PL/SQLを使用して電子メール機能(UTL_MAIL)を実装する方法
-
[解決済み] ORA-01882: タイムゾーン領域が見つかりません。
-
[解決済み] ORA-01950: テーブルスペース 'USERS' に特権がありません [閉鎖]。
-
[解決済み] 外部キーの追加エラー。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 実装 サイバーパンク風ボタン
おすすめ
-
オラクルデータベースに付属するすべてのテーブル構造を説明する(sqlコード)
-
オラクルのブロック修正追跡機能の説明
-
Oracle19c テーブルスペースの作成における落とし穴
-
オラクルユーザー作成プロセスの説明
-
Oracle11g r2のアンインストール、詳細なチュートリアルのクリーンな再インストール(プロのテストは、効果的な再インストールされている)。
-
[解決済み] エラー発生 - ORA-01858: 数値が期待される場所に非数値の文字が見つかりました。
-
[解決済み] ミリ秒を含む日付文字列に対するOracle to_date関数の使用
-
[解決済み] PLS-00306:Oracle SP の呼び出しで引数の数または種類が誤っている。
-
[解決済み] PLS-907でライブラリユニットを読み込めない
-
[解決済み] ORA-4031 "unable to allocate x bytes of shared memory" を解決する。