[解決済み] SQL Developerでストアドプロシージャを実行しますか?
2023-05-25 15:05:15
質問
複数の入出力パラメータを持つストアドプロシージャを実行しようとしています。このプロシージャは、Connections パネルで Other Users | | Packages | | をナビゲートすることによってのみ表示することができます。
右クリックすると、メニュー項目は "Order Members By..." と "Create Unit Test" (グレー表示) になります。ユーザーによってアクセスされた場合、プロシージャを実行する機能はないようです。
SQL ファイルとしてプロシージャを実行できるように、匿名ブロックを作成する方法の例を見つけようとしましたが、うまくいくものが見つかりませんでした。
どなたか、SQL Developer からこのプロシージャを実行する方法をご存知でしょうか。私はバージョン 2.1.1.64 を使用しています。
事前にありがとうございます。
EDIT 1:
呼び出したいプロシージャは、このようなシグネチャを持っています。
user.package.procedure(
p_1 IN NUMBER,
p_2 IN NUMBER,
p_3 OUT VARCHAR2,
p_4 OUT VARCHAR2,
p_5 OUT VARCHAR2,
p_6 OUT NUMBER)
匿名ブロックをこのように書くと
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;
エラーが出ます。
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
out*の変数を初期化してみました。
out1 VARCHAR2(100) := '';
を実行しても、同じエラーが発生します。
EDIT 2:
Alexの回答に基づいて、paramsの前のコロンを削除してみたところ、このようになりました。
Error starting at line 1 in command:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:
:= . ( @ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
どのように解決するのですか?
単純なパラメータ型(つまり、リフカーサーなどではない)を使えば、以下のようなことができます。
SET serveroutput on;
DECLARE
InParam1 number;
InParam2 number;
OutParam1 varchar2(100);
OutParam2 varchar2(100);
OutParam3 varchar2(100);
OutParam4 number;
BEGIN
/* Assign values to IN parameters */
InParam1 := 33;
InParam2 := 89;
/* Call procedure within package, identifying schema if necessary */
schema.package.procedure(InParam1, InParam2,
OutParam1, OutParam2, OutParam3, OutParam4);
/* Display OUT parameters */
dbms_output.put_line('OutParam1: ' || OutParam1);
dbms_output.put_line('OutParam2: ' || OutParam2);
dbms_output.put_line('OutParam3: ' || OutParam3);
dbms_output.put_line('OutParam4: ' || OutParam4);
END;
/
編集 をOPの仕様で使用し、別のアプローチで
:var
をバインドする変数を利用する代替アプローチを採用しました。
var InParam1 number;
var InParam2 number;
var OutParam1 varchar2(100);
var OutParam2 varchar2(100);
var OutParam3 varchar2(100);
var OutParam4 number;
BEGIN
/* Assign values to IN parameters */
:InParam1 := 33;
:InParam2 := 89;
/* Call procedure within package, identifying schema if necessary */
schema.package.procedure(:InParam1, :InParam2,
:OutParam1, :OutParam2, :OutParam3, :OutParam4);
END;
/
-- Display OUT parameters
print :OutParam1;
print :OutParam2;
print :OutParam3;
print :OutParam4;
関連
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] Oracle Database 11g Express Editionを初期インストールした後、新しいデータベースを作成する方法は?
-
[解決済み] Oracle JDBC ojdbc6 JarをMaven依存にする。
-
[解決済み] DB内の全スキーマをリストアップするためのOracle SQLクエリ
-
[解決済み] Oracle Database 11gのHibernate方言?
-
[解決済み] oracleのDATEとTIMESTAMPの違いについて
-
[解決済み] Oracleストアドプロシージャにおける "AS "と "IS "の違いは何ですか?
-
[解決済み] OracleでGUIDを生成するには?
-
[解決済み] Oracleのnullとemptyの文字列 [重複].
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Oracleで主キーカラムを取得する方法は?
-
[解決済み] Oracle SQL Developerで変数の置換を回避する方法
-
[解決済み] oracleのsidとデータベース名を確認する
-
[解決済み] OracleのIN句に1000以上の値を入れる方法【重複あり
-
[解決済み] Oracle Database 11g Express Editionを初期インストールした後、新しいデータベースを作成する方法は?
-
[解決済み] 制約名でテーブル名を取得する [重複]。
-
[解決済み] DB内の全スキーマをリストアップするためのOracle SQLクエリ
-
[解決済み] oracleのDATEとTIMESTAMPの違いについて
-
[解決済み] Oracleストアドプロシージャにおける "AS "と "IS "の違いは何ですか?
-
[解決済み] OracleでGUIDを生成するには?