- PR -

ストアド内でVIEWを定義

1
投稿者投稿内容
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-03-27 17:52
お世話になります。

環境はORACLE8.1.6です。

ストアドでサブファンクションを定義できるように、VIEWを定義することはできないのでしょうか?
ストアドに渡された引数を使用してVIEWを作成したのですが・・。

理由はというとあるSELECTの実行結果をそのストアド内で何度か使用するのですが、
そのSELECTがかなり重いSELECTなのです。

なので、少しでも処理を早くしたいのですが。
ご存知の方いましたら教えてください
takepon
ベテラン
会議室デビュー日: 2005/11/28
投稿数: 55
お住まい・勤務地: 千葉県・東京都
投稿日時: 2006-03-27 18:02
引用:

環境はORACLE8.1.6です。

ストアドでサブファンクションを定義できるように、VIEWを定義することはできないのでしょうか?
ストアドに渡された引数を使用してVIEWを作成したのですが・・。

理由はというとあるSELECTの実行結果をそのストアド内で何度か使用するのですが、
そのSELECTがかなり重いSELECTなのです。




EXECUTE IMMEDIATE 'CREATE VIEW VIEW_A AS SELECT <省略>';

で出来ませんでしたけ?
8.1.x 以降で使えるような・・・。
ちなみに、DDLなので、トランザクションにはお気をつけください。

#遅い SELECT をVIEWにして速くなるのかな・・。

_________________
takepon
てんてこダンス
買太郎
会議室デビュー日: 2006/03/27
投稿数: 10
お住まい・勤務地: 大阪府
投稿日時: 2006-03-27 18:05
パフォーマンスって事なら、Viewよりワークテーブル(一時テーブル)で検討をお勧めします

SQL Serverだとテーブル名の前に"#"や"##"を付ければ出来ます。
ORACLEって事なんで、実テーブルで作るんでしたっけ?

最近、ORACLEのジョブないから、
うろ覚え(さっそく訂正)

[ メッセージ編集済み 編集者: 買太郎 編集日時 2006-03-27 18:06 ]
takepon
ベテラン
会議室デビュー日: 2005/11/28
投稿数: 55
お住まい・勤務地: 千葉県・東京都
投稿日時: 2006-03-27 18:11
引用:

パフォーマンスって事なら、Viewよりワークテーブル(一時テーブル)で検討をお勧めします

SQL Serverだとテーブル名の前に"#"や"##"を付ければ出来ます。
ORACLEって事なんで、実テーブルで作るんでしたっけ?




CERATE GLOBAL TEMPORARY TABLE ですかね。
8iから使えるみたいです。

事前に一時表を作成(セッション固有 or トランザクション固有)しておけば、
あとはストアドからでもINSERTやUPDATE,SELECTが出来ます。
トランザクション固有なら、コミットやロールバック時にデータがなくなります。
要件にあった方式で試してみてはいかがですか?

_________________
takepon
てんてこダンス
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-03-27 18:16
レスありがとうございます。

ん〜、やはりワークテーブルしかないのでしょうか・・。

実際にVIEWを作ったりせずにストアド内でのみのサブVIEWみたいなものが
できればいいのですが。

無理そうですね

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-27 22:40
テンポラリテーブル


っつうか、ここ Insider.NET だし。
周辺技術って、広い。。。
1

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