OracleでDBリンク先のストアドプロシージャの自動生成

1,366 views
Skip to first unread message

awaawa

unread,
Sep 27, 2011, 12:27:16 PM9/27/11
to DBFluteユーザの集い
jfluteさん

awaawaです。

OracleでDBリンク先のストアドプロシージャ(パッケージプロシージャ含む)の自動生成を行いたいのですが、
可能でしょうか。自動生成にあたり、何か特別な設定が必要でしょうか。

outsideSqlDefinitionMap.dfpropのtargetProcedureNameListに
「ストアドプロシージャ名@DBリンク名」や「ストアドプロシージャ名」
を定義してみましたが、作成されませんでした。

とりあえず、以下の対応で凌ぎました。
1. 一時的にメインのDBスキーマに同じストアドプロシージャ(名前とパラメータ同一で処理なし)を作成。
2. 自動生成後、その生成されたソースを別のパッケージに移動。
3. GapクラスのgetProcedureNameをOverrideして「@DBリンク名」を追加する。
4. 1.で作成したストアドプロシージャを削除。

もし、DBリンク先のストアドプロシージャの自動生成ができない(またはできてもDB権限に依存する)場合、
additionalTableMap.dfpropのストアドプロシージャ版を作っていただけるとうれしいです。

ご確認、ご検討をお願いします。

kubo

unread,
Sep 27, 2011, 8:24:31 PM9/27/11
to dbf...@googlegroups.com
jfluteです。

awaawaさん、おはようございます。
こういうときは、まずはDBリンクのストアドプロシージャとは、
どういう仕様のものなのかを提示できると良いと思います。
どういう風な構造でどういうDDLで作成してどういう風に呼び出すものか、
などなど。(DBリンクのストアドを知ってる可能性って多くないと思うので)

シノニムのDBリンクもOracle限定特別処理で実現しているので、
恐らくストアドプロシージャも特別処理が必要になりそうですね。

2011/9/28 awaawa <p1us3i...@gmail.com>:

> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
> このグループから退会するには、dbflute+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/dbflute?hl=ja からこのグループにアクセスしてください。
>
>

kubo

unread,
Sep 28, 2011, 4:59:20 AM9/28/11
to dbf...@googlegroups.com
jfluteです。

awaawaくん、DBリンクのストアドプロシージャは、
シノニム経由ではなく、直接呼び出しをするのかな?

いずれにせよ、現状ではできないかもしれないけど、
DBリンクのものって、シノニムで隠すのをよく見るので、
DBリンクのプロシージャシノニムに対応する方が
いいのかなと思って。


2011/9/28 kubo <dbf...@gmail.com>:

kubo

unread,
Sep 28, 2011, 7:11:37 AM9/28/11
to dbf...@googlegroups.com
jfluteです。

> いずれにせよ、現状ではできないかもしれないけど、
> DBリンクのものって、シノニムで隠すのをよく見るので、
> DBリンクのプロシージャシノニムに対応する方が
> いいのかなと思って。

いずれにせよ、DBリンクのプロシージャシノニムを作ると、
Docタスクで「落ちる」ということがわかったので対応します。
DBリンクのテーブルと区別がつかなくて、そのままテーブルと
同じように扱われてしまうので。その対応で、そのまま
データディクショナリを覗いてProcedurePmbを生成できればと。

DBリンクから直接の自動生成は、結局テーブルも同じ話なので、
基本的にはDBリンクはシノニムを経由すれば自動生成できる、
っていう感じの仕様かなぁ...

2011/9/28 kubo <dbf...@gmail.com>:

awaawa

unread,
Sep 29, 2011, 8:43:36 PM9/29/11
to DBFluteユーザの集い
awaawaです。

情報不足&返信遅れすいません。

DBリンクのストアドプロシージャの内容ですが、
プロシージャが他システムから提供されており、
単純な入出力パラメータあり、
処理的にはDBリンク先のテーブルのデータ更新になります。

確認ありがとうございます。
現状は直接呼び出す予定でいますが、シノニム経由でも問題ありません。

On 9月28日, 午後8:11, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> > いずれにせよ、現状ではできないかもしれないけど、
> > DBリンクのものって、シノニムで隠すのをよく見るので、
> > DBリンクのプロシージャシノニムに対応する方が
> > いいのかなと思って。
>
> いずれにせよ、DBリンクのプロシージャシノニムを作ると、
> Docタスクで「落ちる」ということがわかったので対応します。
> DBリンクのテーブルと区別がつかなくて、そのままテーブルと
> 同じように扱われてしまうので。その対応で、そのまま
> データディクショナリを覗いてProcedurePmbを生成できればと。
>
> DBリンクから直接の自動生成は、結局テーブルも同じ話なので、
> 基本的にはDBリンクはシノニムを経由すれば自動生成できる、
> っていう感じの仕様かなぁ...
>
> 2011/9/28 kubo <dbfl...@gmail.com>:
>
>
>
> > jfluteです。
>
> > awaawaくん、DBリンクのストアドプロシージャは、
> > シノニム経由ではなく、直接呼び出しをするのかな?
>
> > いずれにせよ、現状ではできないかもしれないけど、
> > DBリンクのものって、シノニムで隠すのをよく見るので、
> > DBリンクのプロシージャシノニムに対応する方が
> > いいのかなと思って。
>
> > 2011/9/28 kubo <dbfl...@gmail.com>:
> >> jfluteです。
>
> >> awaawaさん、おはようございます。
> >> こういうときは、まずはDBリンクのストアドプロシージャとは、
> >> どういう仕様のものなのかを提示できると良いと思います。
> >> どういう風な構造でどういうDDLで作成してどういう風に呼び出すものか、
> >> などなど。(DBリンクのストアドを知ってる可能性って多くないと思うので)
>
> >> シノニムのDBリンクもOracle限定特別処理で実現しているので、
> >> 恐らくストアドプロシージャも特別処理が必要になりそうですね。
>
> >> 2011/9/28 awaawa <p1us3inus2...@gmail.com>:

kubo

unread,
Sep 30, 2011, 3:00:29 AM9/30/11
to dbf...@googlegroups.com
jfluteです。

> 現状は直接呼び出す予定でいますが、シノニム経由でも問題ありません。

awaawaさん、申し訳ない。
プロシージャシノニムもAdditionalTableも挫折しましたぁ...

プロシージャシノニムのDocタスクでのエラーは回避。
自動生成となるとかなりの実装時間が必要で、
一旦中断します。ただ、いつかはやりたいところですね。
(Oracle周りのロジックをリファクタしないと)

AdditionalTableも意外に時間食いそうで、
ベタに書くくらいなら、awaawaさんの方でやってる
ダミーで一度 Pmb 作って手動でメンテしていくのと
大して変わらないので、現状ではそれでお願いします。
(テーブルのクラスは自前で作るとなったらつらいですが、
プロシージャであればそこまででないのでいざとなれば手動で)

2011/9/30 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Sep 30, 2011, 8:49:01 AM9/30/11
to dbf...@googlegroups.com
jfluteです。

> awaawaさん、申し訳ない。
> プロシージャシノニムもAdditionalTableも挫折しましたぁ...

いや、DBリンクプロシージャシノニムは、
やはりちょっとアプローチしてみるか。
いかんね弱気になっちゃぁ。
でも、連続した集中時間と良い体調が必要なので、
少し調整してみます。

2011/9/30 kubo <dbf...@gmail.com>:

awaawa

unread,
Sep 30, 2011, 10:34:22 PM9/30/11
to DBFluteユーザの集い
jfluteさん

できそうであれば、調整よろしくお願いします。
(いつも無茶ぶりすいません。)

難しそうであれば、ダミーで作成する手順がサイトに載っていれば、
問題ないと思います。

On 9月30日, 午後9:49, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> > awaawaさん、申し訳ない。
> > プロシージャシノニムもAdditionalTableも挫折しましたぁ...
>
> いや、DBリンクプロシージャシノニムは、
> やはりちょっとアプローチしてみるか。
> いかんね弱気になっちゃぁ。
> でも、連続した集中時間と良い体調が必要なので、
> 少し調整してみます。
>
> 2011/9/30 kubo <dbfl...@gmail.com>:
>
>
>
>
>
>
>
> > jfluteです。
>
> >> 現状は直接呼び出す予定でいますが、シノニム経由でも問題ありません。
>
> > awaawaさん、申し訳ない。
> > プロシージャシノニムもAdditionalTableも挫折しましたぁ...
>
> > プロシージャシノニムのDocタスクでのエラーは回避。
> > 自動生成となるとかなりの実装時間が必要で、
> > 一旦中断します。ただ、いつかはやりたいところですね。
> > (Oracle周りのロジックをリファクタしないと)
>
> > AdditionalTableも意外に時間食いそうで、
> > ベタに書くくらいなら、awaawaさんの方でやってる
> > ダミーで一度 Pmb 作って手動でメンテしていくのと
> > 大して変わらないので、現状ではそれでお願いします。
> > (テーブルのクラスは自前で作るとなったらつらいですが、
> > プロシージャであればそこまででないのでいざとなれば手動で)
>
> > 2011/9/30 awaawa <p1us3inus2...@gmail.com>:

kubo

unread,
Sep 30, 2011, 11:38:31 PM9/30/11
to dbf...@googlegroups.com
jfluteです。

途中経過。
空っぽのProcedurePmb自体は作成できるようになりました。
引数とかのメタデータの取得がこれからです。

なんというか、本来OracleのJDBCドライバがやってくれることを、
自前でやってるって感じですね。データディクショナリの形式を
JDBCのメタデータに翻訳って感じで。

で、ひとつお願いがあるのだけど、
そのDBリンクのプロシージャを呼び出すプロシージャを
メインスキーマで作成して、そのプロシージャのPmbを
自動生成して呼び出すことってできるかな?
(アダプタ的なプロシージャを用意するイメージ)

実際にそうするってわけじゃなくて、
そういうことがOracleで可能かどうかを知りたい。
それが、DBFluteでDBリンクに対して、
どこまで突っ込んでいくかの指針になるので。

2011/10/1 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Oct 1, 2011, 6:28:32 AM10/1/11
to dbf...@googlegroups.com
jfluteです。

DBFlute-0.9.9.1A-RC1 をお試し下さい。
DBリンクのプロシージャシノニムの ProcedurePmb が
自動生成されるはずです。ただし、STRUCT型や
パッケージ付きプロシージャには対応していません。
(プロシージャシノニムでは、もともとパッケージ付きは未サポート)

ExecutionMetaは、論理的には対応しているはずですが未確認です。
単純なIN, OUTのパラメータでの呼び出しのみ確認済みです。

ちなみに、DBリンクのシノニムの実体が
プロシージャシノニムの場合にも対応しています。
ここが限界な感じだね。

2011/10/1 kubo <dbf...@gmail.com>:

awaawa

unread,
Oct 1, 2011, 10:33:26 PM10/1/11
to DBFluteユーザの集い
awaawaです。

対応ありがとうございます。

> データディクショナリの形式を
> JDBCのメタデータに翻訳って感じで。
修正されたソースコードを見ると大変さが。

> (アダプタ的なプロシージャを用意するイメージ)
すいません。月曜日に確認します。おそらく呼び出しは問題ないと思います。

> STRUCT型やパッケージ付きプロシージャには対応していません
DBリンク先のパッケージ付きプロシージャはやはり難しいんですね。。。
今回の要件だとパッケージ付きなもので。

> OracleでDBリンク先のストアドプロシージャ(パッケージプロシージャ含む)の自動生成を行いたいのですが、
今回の要件がパッケージ付きであることを強調するべきでした。すいません。
DBリンクもパッケージ付きもオラクル独自(?)なので複合パターンだと難しい感じですよね。
「(アダプタ的なプロシージャを用意するイメージ)」がうまくいけば、それで対応ですね。

On 10月1日, 午後7:28, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> DBFlute-0.9.9.1A-RC1 をお試し下さい。
> DBリンクのプロシージャシノニムの ProcedurePmb が
> 自動生成されるはずです。ただし、STRUCT型や
> パッケージ付きプロシージャには対応していません。
> (プロシージャシノニムでは、もともとパッケージ付きは未サポート)
>
> ExecutionMetaは、論理的には対応しているはずですが未確認です。
> 単純なIN, OUTのパラメータでの呼び出しのみ確認済みです。
>
> ちなみに、DBリンクのシノニムの実体が
> プロシージャシノニムの場合にも対応しています。
> ここが限界な感じだね。
>
> 2011/10/1 kubo <dbfl...@gmail.com>:
>
>
>
>
>
>
>
> > jfluteです。
>
> > 途中経過。
> > 空っぽのProcedurePmb自体は作成できるようになりました。
> > 引数とかのメタデータの取得がこれからです。
>
> > なんというか、本来OracleのJDBCドライバがやってくれることを、
> > 自前でやってるって感じですね。データディクショナリの形式を
> > JDBCのメタデータに翻訳って感じで。
>
> > で、ひとつお願いがあるのだけど、
> > そのDBリンクのプロシージャを呼び出すプロシージャを
> > メインスキーマで作成して、そのプロシージャのPmbを
> > 自動生成して呼び出すことってできるかな?
> > (アダプタ的なプロシージャを用意するイメージ)
>
> > 実際にそうするってわけじゃなくて、
> > そういうことがOracleで可能かどうかを知りたい。
> > それが、DBFluteでDBリンクに対して、
> > どこまで突っ込んでいくかの指針になるので。
>
> > 2011/10/1 awaawa <p1us3inus2...@gmail.com>:

kubo

unread,
Oct 1, 2011, 11:13:26 PM10/1/11
to dbf...@googlegroups.com
jfluteです。

あら、パッケージプロシージャなのね。
何が難しいかと言うと、
そもそもOracleでシノニム経由でパッケージプロシージャが
呼び出せないというところにあります。メタデータ的に
DBFluteでの自動生成も厳しいところがありますが、
(ALL_SYNONYMS からパッケージを特定できない)
自動生成できたところで、シノニムだとパッケージ部分が
解決できないようで、DBリンクでなくても普通に呼び出す
とエラーになり話にならない。

ただ、Oracle10g XE での話なので、Oracle11g なら改善
されているかも。これは試してもらえるとありがたい。
パッケージプロシージャの場合、Oracle11gでは
ALL_SYNONYMSのTABLE_NAMEには何が入ってるかな?

あとは、dfprop に「プロシージャ名@リンク名」を
ベタに入れたら自動生成されるようにって頑張れなくも
ないかもですが、アダプタプロシージャができるんなら、
その方がシンプルで管理しやすいように思えます。
いずれにせよ、自分ならそういう風にするかも。
シノニムも他のスキーマのオブジェクトを直接触らない
ようにと作ったりするものだから、同じような感じで。

2011/10/2 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Oct 1, 2011, 11:38:45 PM10/1/11
to DBFluteユーザの集い
awaawaです。

何はともあれ、oracle11gで確認してみます。
(アダプタプロシージャとALL_SYNONYMSの確認。)

確かに、アダプタプロシージャのほうが使う側もわかりやすい(見通しがいい)ですね。
(変数名 表名.列名%TYPE;が使えないなど多少の問題があるかもしれませんが。)

On 10月2日, 午後12:13, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> あら、パッケージプロシージャなのね。
> 何が難しいかと言うと、
> そもそもOracleでシノニム経由でパッケージプロシージャが
> 呼び出せないというところにあります。メタデータ的に
> DBFluteでの自動生成も厳しいところがありますが、
> (ALL_SYNONYMS からパッケージを特定できない)
> 自動生成できたところで、シノニムだとパッケージ部分が
> 解決できないようで、DBリンクでなくても普通に呼び出す
> とエラーになり話にならない。
>
> ただ、Oracle10g XE での話なので、Oracle11g なら改善
> されているかも。これは試してもらえるとありがたい。
> パッケージプロシージャの場合、Oracle11gでは
> ALL_SYNONYMSのTABLE_NAMEには何が入ってるかな?
>
> あとは、dfprop に「プロシージャ名@リンク名」を
> ベタに入れたら自動生成されるようにって頑張れなくも
> ないかもですが、アダプタプロシージャができるんなら、
> その方がシンプルで管理しやすいように思えます。
> いずれにせよ、自分ならそういう風にするかも。
> シノニムも他のスキーマのオブジェクトを直接触らない
> ようにと作ったりするものだから、同じような感じで。
>
> 2011/10/2 awaawa <p1us3inus2...@gmail.com>:
> ...
>
> もっと読む ≫

kubo

unread,
Oct 2, 2011, 1:00:40 AM10/2/11
to dbf...@googlegroups.com
jfluteです。

> 何はともあれ、oracle11gで確認してみます。
> (アダプタプロシージャとALL_SYNONYMSの確認。)

よろしく!

ちなみに、Oracle10g XE だと、

CREATE SYNONYM SYNONYM_MAIN_PKG_PROCEDURE
FOR MAIN_PKG.SP_PKG_NO_PARAMETER;

とパッケージプロシージャのシノニムを作成して、

call SYNONYM_MAIN_PKG_PROCEDURE()

とすると、

Error
[row:1,col:6] ORA-04045:
EXAMPLEDB.SYNONYM_MAIN_PKG_PROCEDUREの再コンパイルまたは再検証中にエラーが発生しました
ORA-00980: シノニム変換が無効です。

※cal MAIN_PKG.SP_PKG_NO_PARAMETER() なら実行可能

となって、ALL_SYNONYMSを見ると、
TABLE_OWNER が MAIN_PKG (パッケージ名)で、
TABLE_NAME が SP_PKG_NO_PARAMETER と
なっています。

「どのスキーマのプロシージャ?」って情報が抜け落ちてて、
自動生成がでちょっと困るという点に加え(頑張ればなんとか!?)、
いずれにせよ実行できないじゃんってところが未サポートの理由。

2011/10/2 awaawa <p1us3i...@gmail.com>:

kubo

unread,
Oct 2, 2011, 9:15:20 AM10/2/11
to dbf...@googlegroups.com
jfluteです。

同じくRC1(上書き)で、

outsideSqlDefinitionMap.dfprop にて、

; targetProcedureNameList = list:{
; NEXT_PKG.SP_PKG_NO_PARAMETER@NEXT_LINK
; NEXT_PKG.SP_PKG_IN_OUT_PARAMETER@NEXT_LINK
}

と指定すると、自動生成できるようにしました。
@が付いている場合は、追加的な意味合いになるので、
これを指定したからといって他のプロシージャが自動生成
されなくなるわけではありません。(その判定とは独立)
名前は IncludedProcedureToDBLink、Oracle限定機能。
dbflute-oracle-exampleにて簡単なものは実際にテストしてます。

確認事項をまとめると:

A. アダプタプロシージャからDBリンクのプロシージャが呼び出せるか?
B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
C. IncludedProcedureToDBLink がそっちの環境でちゃんと動くか?

という感じ。

2011/10/2 kubo <dbf...@gmail.com>:

awaawa

unread,
Oct 2, 2011, 1:23:41 PM10/2/11
to DBFluteユーザの集い
awaawaです。

対応ありがとうございます。

> A. アダプタプロシージャからDBリンクのプロシージャが呼び出せるか?
> B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
> C. IncludedProcedureToDBLink がそっちの環境でちゃんと動くか?
明日、確認します。報告はおそらく夜中になると思います。

On 10月2日, 午後10:15, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> 同じくRC1(上書き)で、
>
> outsideSqlDefinitionMap.dfprop にて、
>
> ; targetProcedureNameList = list:{
> ; NEXT_PKG.SP_PKG_NO_PARAMETER@NEXT_LINK
> ; NEXT_PKG.SP_PKG_IN_OUT_PARAMETER@NEXT_LINK
> }
>
> と指定すると、自動生成できるようにしました。
> @が付いている場合は、追加的な意味合いになるので、
> これを指定したからといって他のプロシージャが自動生成
> されなくなるわけではありません。(その判定とは独立)
> 名前は IncludedProcedureToDBLink、Oracle限定機能。
> dbflute-oracle-exampleにて簡単なものは実際にテストしてます。
>
> 確認事項をまとめると:
>
> A. アダプタプロシージャからDBリンクのプロシージャが呼び出せるか?
> B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
> C. IncludedProcedureToDBLink がそっちの環境でちゃんと動くか?
>
> という感じ。
>
> 2011/10/2 kubo <dbfl...@gmail.com>:
>
>
>
>
>
>
>
> > jfluteです。
>
> >> 何はともあれ、oracle11gで確認してみます。
> >> (アダプタプロシージャとALL_SYNONYMSの確認。)
>
> > よろしく!
>
> > ちなみに、Oracle10g XE だと、
>
> > CREATE SYNONYM SYNONYM_MAIN_PKG_PROCEDURE
> > FOR MAIN_PKG.SP_PKG_NO_PARAMETER;
>
> > とパッケージプロシージャのシノニムを作成して、
>
> > call SYNONYM_MAIN_PKG_PROCEDURE()
>
> > とすると、
>
> > Error
> > [row:1,col:6] ORA-04045:
> > EXAMPLEDB.SYNONYM_MAIN_PKG_PROCEDUREの再コンパイルまたは再検証中にエラーが発生しました
> > ORA-00980: シノニム変換が無効です。
>
> > ※cal MAIN_PKG.SP_PKG_NO_PARAMETER() なら実行可能
>
> > となって、ALL_SYNONYMSを見ると、
> > TABLE_OWNER が MAIN_PKG (パッケージ名)で、
> > TABLE_NAME が SP_PKG_NO_PARAMETER と
> > なっています。
>
> > 「どのスキーマのプロシージャ?」って情報が抜け落ちてて、
> > 自動生成がでちょっと困るという点に加え(頑張ればなんとか!?)、
> > いずれにせよ実行できないじゃんってところが未サポートの理由。
>
> > 2011/10/2 awaawa <p1us3inus2...@gmail.com>:
> >>> >> >>> >> 処理的にはDBリンク先のテーブルのデータ更新になります。...
>
> もっと読む ≫

awaawa

unread,
Oct 3, 2011, 6:55:13 PM10/3/11
to DBFluteユーザの集い
awaawaです。

確認しました。(いずれもOracle11gで。)
取り急ぎ、ご報告です。

> A. アダプタプロシージャからDBリンクのプロシージャが呼び出せるか?
Object Browserからプロシージャ実行。OK
自動生成。OK
自動生成されたソースをjavaから実行。OK

> B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
Object Browserからプロシージャ実行。OK
自動生成。NG
自動生成されたソースをjavaから実行。未確認
※パッケージプロシージャのシノニム作成自体は、パッケージ名までの指定でいけました。
 シノニム作成 CREATE SYNONYM SYNONYM_MAIN_PKG FOR MAIN_PKG;
 実行 SYNONYM_MAIN_PKG.SP_PKG_NO_PARAMETER()

> C. IncludedProcedureToDBLink がそっちの環境でちゃんと動くか?
自動生成。OK。
自動生成されたソースをjavaから実行。OK。

Cも自動生成できるようにしていただいたんですね。ありがとうございます!
> > >>> >> >>> > AdditionalTableも意外に時間食いそうで、...
>
> もっと読む ≫

kubo

unread,
Oct 3, 2011, 7:12:45 PM10/3/11
to dbf...@googlegroups.com
jfluteです。

awaawaさん、確認ありがとう!
よかったよかった。

>> B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
> Object Browserからプロシージャ実行。OK
> 自動生成。NG

この自動生成NGってどういうこと?
下のように、パッケージ名だけをシノニムにした場合に、
DBFluteで自動生成されなかったってこと?

> ※パッケージプロシージャのシノニム作成自体は、パッケージ名までの指定でいけました。
>  シノニム作成 CREATE SYNONYM SYNONYM_MAIN_PKG FOR MAIN_PKG;
>  実行 SYNONYM_MAIN_PKG.SP_PKG_NO_PARAMETER()

なるほど、そういう使い方ならって感じなんだね。
というかややこしい、この場合はプロシージャシノニムではなく、
「パッケージ(だけ)シノニム」という別の概念と言えるかもね。
これはこれでプロシージャシノニムの処理の中で特別処理として
扱わないとダメだね。

あとこの場合、DBリンクのパッケージシノニムって
作れるのかなぁ!?!?

2011/10/4 awaawa <p1us3i...@gmail.com>:

awaawa

unread,
Oct 3, 2011, 8:07:04 PM10/3/11
to DBFluteユーザの集い
awaawaです。

> この自動生成NGってどういうこと?
> あとこの場合、DBリンクのパッケージシノニムって 作れるのかなぁ!?!?
昨日動作確認・報告したのが、DBリンクのパッケージシノニムでした。
この場合は、自動生成されませんでした。

なので、まずは普通(DBリンクでない)のパッケージシノニムをやらないとだめですね。
今夜報告します!

On 10月4日, 午前8:12, kubo <dbfl...@gmail.com> wrote:
> jfluteです。
>
> awaawaさん、確認ありがとう!
> よかったよかった。
>
> >> B. Oracle11gにてシノニムでパッケージプロシージャが呼び出せるか?
> > Object Browserからプロシージャ実行。OK
> > 自動生成。NG
>
> この自動生成NGってどういうこと?
> 下のように、パッケージ名だけをシノニムにした場合に、
> DBFluteで自動生成されなかったってこと?
>
> > ※パッケージプロシージャのシノニム作成自体は、パッケージ名までの指定でいけました。
> >  シノニム作成 CREATE SYNONYM SYNONYM_MAIN_PKG FOR MAIN_PKG;
> >  実行 SYNONYM_MAIN_PKG.SP_PKG_NO_PARAMETER()
>
> なるほど、そういう使い方ならって感じなんだね。
> というかややこしい、この場合はプロシージャシノニムではなく、
> 「パッケージ(だけ)シノニム」という別の概念と言えるかもね。
> これはこれでプロシージャシノニムの処理の中で特別処理として
> 扱わないとダメだね。
>
> あとこの場合、DBリンクのパッケージシノニムって
> 作れるのかなぁ!?!?
>
> 2011/10/4 awaawa <p1us3inus2...@gmail.com>:
> >> > >>> >> > なんというか、本来OracleのJDBCドライバがやってくれることを、...
>
> もっと読む ≫

kubo

unread,
Oct 4, 2011, 7:33:57 AM10/4/11
to dbf...@googlegroups.com
jfluteです。

>> この自動生成NGってどういうこと?
>> あとこの場合、DBリンクのパッケージシノニムって 作れるのかなぁ!?!?
> 昨日動作確認・報告したのが、DBリンクのパッケージシノニムでした。
> この場合は、自動生成されませんでした。
>
> なので、まずは普通(DBリンクでない)のパッケージシノニムをやらないとだめですね。
> 今夜報告します!

パッケージシノニムはDBFluteとして処理もしてないので、
自動生成はされないはずです。ただ、シノニム作る時って、
CREATE SYNONYM ... FOR MAIN_PKG@LINK_NAME
みたいに作るのかな???

どちらかというと Oracle11g で、パッケージプロシージャを
まるごとシノニムにした場合に実行できるかどうかを
確認してみて欲しい。

CREATE SYNONYM ... FOR MAIN_PKG.SP_PKG_NO_PARAMETER

まあ、これはたぶんだめなんだろうけど...

パッケージプロシージャでそのパッケージのプロシージャを
全て自動生成することはできなくはないだろうけど、
一つのパッケージにたくさんプロシージャがあったりすると、
かなり乱暴なことになりそう...パッケージ名だけをシノニムって、
ほとんど意味ないようなきもするので、これは保留かな。
(dfpropでDBリンクプロシージャを自動生成できるようにしたしね)

awaawa

unread,
Oct 4, 2011, 11:04:13 AM10/4/11
to DBFluteユーザの集い
awaawaです。

> CREATE SYNONYM ... FOR MAIN_PKG@LINK_NAME
> みたいに作るのかな???
そうです。実際はObject BrowserのGUIで作りましたが。

> どちらかというと Oracle11g で、パッケージプロシージャを
> まるごとシノニムにした場合に実行できるかどうかを
> 確認してみて欲しい。
問題なく実行できました。(Object Browserにて確認)
CREATE SYNONYM SYNONYM_MAIN_PKG FOR MAIN_PKG
SYNONYM_MAIN_PKG.SP_PKG_NO_PARAMETER()

CREATE SYNONYM SYNONYM_DB_LINK_MAIN_PKG FOR MAIN_PKG@LINK_NAME
SYNONYM_DB_LINK_MAIN_PKG.SP_PKG_NO_PARAMETER()

> CREATE SYNONYM ... FOR MAIN_PKG.SP_PKG_NO_PARAMETER
これはだめですね。MAIN_PKGをスキーマとして検知してしまうみたいで。

> ほとんど意味ないようなきもするので、これは保留かな。
> (dfpropでDBリンクプロシージャを自動生成できるようにしたしね)
問題ないと思います。

kubo

unread,
Oct 5, 2011, 10:53:21 AM10/5/11
to dbf...@googlegroups.com
jfluteです。

>> CREATE SYNONYM ... FOR MAIN_PKG.SP_PKG_NO_PARAMETER
> これはだめですね。MAIN_PKGをスキーマとして検知してしまうみたいで。

なるほど。じゃあ、このパターンはそもそもダメなんだね。
あんま気にしなくて良いんだな...
したら、パッケージシノニムが将来の課題ということで。

実装が恋しくてたまらなくなったらときにやります。
(ときどきあるんだよ)

2011/10/5 awaawa <p1us3i...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages