5 Replies Latest reply: Sep 21, 2012 3:00 AM by Hiroyuki Nakaie-Oracle RSS

    一時テーブルについて

    962083
      ファンクション内で一時テーブルを作成し、
      一度そのテーブルにデータを格納し、
      ソートを行いたいと思っています。

      ただ、ファンクションを実行するユーザーに権限が無いため、
      ファンクション内でテーブルの作成、削除が作成出来ません。
      テーブルを作成する以外で、
      複数行のデータを複数キーでソートする方法はないでしょうか。

      事前にテーブルを作成し・・・というのも無しでお願いします。
        • 1. Re: 一時テーブルについて
          yamamoto
          ソートを行いたいと思っています。
          「order by」を指定する。

          具体的にどの様なテーブルにどの様なデータがあり、どういう結果が取得したいのか明記しないと、誰にも判りませんよ。
          また、バージョンぐらいは書きましょう。
          バージョンによっては使えない構文があったりしますから・・・。
          • 2. Re: 一時テーブルについて
            962083
            すいません、書き方が悪かったです。

            テキストファイルからデータを読み込んで、
            そのデータをソートしたいのです。

            そのために当初は一時テーブルを使用して、
            読み込んだデータを一時テーブルに一旦入れてから「order by」するつもりでしたが、
            ファンクション内で作成しようとすると権限が足らずに出来ませんでした。

            権限の付与は出来ないので、
            それ以外の方法で何か方法はないかなと思い、いまに至ります。

            バージョンはoracle 10gです。
            • 3. Re: 一時テーブルについて
              yamamoto
              普通なら外部表とかを使うのでしょうが、権限が無く付与もできないのであれば他に手段がないのではないでしょうか?

              配列に格納して、自前のソート・ロジックを書く位では?
              そんな無駄な労力を払うより、DB管理者に権限付与の依頼する方が余程近道かと・・・。

              Edited by: yamamoto on 2012/09/14 13:45
              • 4. Re: 一時テーブルについて
                962083
                やはりそれ以外では自前でロジック書くくらいでしかないですか。。。

                すいません、回答ありがとうございました。
                • 5. Re: 一時テーブルについて
                  Hiroyuki Nakaie-Oracle
                  959080さん、こんにちは。

                  ファイルを読んでテーブルイメージにして出力する表関数を作成すれば、

                  SQL> select * from table(table_function1) order by 1;

                  といった形で並び替えが可能です。
                  表関数の詳細は以下マニュアルをご参照ください。
                  http://docs.oracle.com/cd/E16338_01/appdev.112/b56260/tuning.htm#sthref1122