ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

★Oracle PL/SQL★コミュの変数についての質問です。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
PL/SQLの入門書を一冊程度読んで開発に携わってしまった初心者です。
どうしてもわからず、行き詰ってしまったので質問させて下さい。

現在あるパッケージを作成しています。
例えとして、パッケージ内にプロシージャAとプロシージャBが有るとします。
プロシージャA内で、SELECTにてDBから取ってきた値を変数Cに入れます。
その変数Aはパッケージの呼出し元のモジュールに返します。

ここまでは解りますが問題はここからです。

プロシージャAで変数Cに格納した値を、そのままプロシージャBでも使用したいのです。
変数Cを仕様部で宣言して、グローバル変数として使用すれば楽だと思うのですが、
上司から提示された条件は、グローバル変数は一切使用してはならない。とのことでした。
携帯からの書き込みで、分かり辛いかと思いますが、宜しくお願いします。

コメント(10)

プロシージャBに引数で渡すのはだめですか?
>>ゆうさん
回答ありがとうございます。
すいません。
引数での渡し方がよく分らないんです。。。
ネットで色々調べたのですが、記述の仕方が載ってなくて。
どこか参考になるHPとかありませんでしょうか?
確かにわかりやすいサイトが無いですね。

http://www.t3.rim.or.jp/~buchi/plsql/sld033.htm
サンプルが無いですが、これにあてはめていけばいいです。

引数渡すのは、たいして敷居が高いわけでは無いので、
がんばってください
ありがとうございます。
今携帯なので帰ったら見てみます。
更新が無いのであれば、FUNCTIONのRETURNで返すのをそのまま引数に入れ込むと言う手もありますよ。
>裕太さん
ファンクションだと戻り値って一個しか指定出来ないですよね?
プロシージャAは、OUTパラメータで複数の値をモジュールに返してるので、ファンクションで書けないんです…
OUTパラメータがわかるなら、INパラメータもわかるのでは?
引数 = パラメータですよ。
すいません混乱してきましたorz

こんな感じでいいのでしょうか?質問だらけですいません涙

省略してるので実行部からです

CREATE OR REPLACE PACKAGE BODY TEST AS
PROCEDURE A (C OUT NUMBER)
IS
BEGIN
C := 3;

B(C);
END A;

PROCEDURE B (C IN NUMBER)
IS
BEGIN
-- プロシージャAで入れた変数が表示される
DBMS_OUTPUT.PUT_LINE(C);
END B;
/
良いと思います。
がんばってください!!
皆さんのお陰でなんとかPG終了しPTに入れました。
有り難う御座いました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

★Oracle PL/SQL★ 更新情報

★Oracle PL/SQL★のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング