- PR -

PL-SQLでファンクションとストアドプロシージャの差が知りたいです。

1
投稿者投稿内容
タンちゃん
会議室デビュー日: 2004/04/02
投稿数: 19
投稿日時: 2005-11-10 17:26
皆さんこんばんは!!

相変わらず皆さんに教えて頂きたいことがあって、質問します。

環境
 java 1.4.2
 Tomcat 5.0
 struts 1.2
 spring
 oracle 9i

DBにクエリを実行する時、パラメータと戻り値が変わらないため
DBの機能を使おうとしています。

ですが、オラクルで調べた結果
ファンクションとストアドプロシージャと言う方法がありますが、
その差がはっきりわかりませんので、
皆さんに教えて頂きたいと思います。

パラメータ:param1, param2, param3, param4
戻り値  :return1(VARHCAR2), return2(Number),
      return3(VARHCAR2), return5(VARHCAR2),
      return6(Number)

戻り値をクラスに設定して、Javaで使用したいと思いますが、
どうすればいいでしょうか?

以上、宜しくお願いします。

タンちゃん
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-11-10 17:49

ストアドプロシージャは戻り値がないもの
ストアドファンクションは戻り値があるもの
でOKだと思います。
Wiki PL/SQL ストアドプロシージャ・ストアドファンクション
にもあるように
ファンクションはSQL文中から呼び出すことが主な使い方になると思います。

SQLの列の値を渡し、
ファンクション内で編集などの加工して
結果を戻り値として返す。
SQLの結果としてファンクションで加工した内容が表示される
・・・っていうイメージですね。


引用:

タンちゃんさんの書き込み (2005-11-10 17:26) より:

パラメータ:param1, param2, param3, param4
戻り値  :return1(VARHCAR2), return2(Number),
      return3(VARHCAR2), return5(VARHCAR2),
      return6(Number)

戻り値をクラスに設定して、Javaで使用したいと思いますが、
どうすればいいでしょうか?


でタンちゃんさんの書いているものより、
ストアドプロシージャで
戻り値はOUTPUTパラメータにすればいいかと思います。
#特段戻り値が必要な気がしなかったので。

ストアドプロシージャを実行し、
OUTPUTパラメータの値をクラスにセットすればいいんじゃないでしょうか?
タンちゃん
会議室デビュー日: 2004/04/02
投稿数: 19
投稿日時: 2005-11-10 19:03
夏椰【SUICA】さん

早速のご返事有難うございます。

教えて頂いた方法でやってみます。

助かりました。m(__)m

タンちゃん
1

スキルアップ/キャリアアップ(JOB@IT)