2017-06-19 10 views
1

Oracle 11gR2を使用すると、テーブルから200個のフィールドで構成される固定長の文字列を作成する必要があります。oracleデータベースで固定長タイプを作成できますか?

固定長文字列とデータベースフィールドの関係を持つテーブルを読み込んで、これを作成する動的select文を作成しました。私は何かのように終わります。

select rpad(char_field1, 20,' ') || 
     lpad(num_field1,6,'0') || 
     rpad(' ',8,' ') AS FIXED_STRING 
from my_table 

それは私が外部table of type fixedを作成する機能があることに気づいたが、私のデータがディスクに書き込む必要はありません正常に動作しますが、すべての連結との集中CPUやパディングなど

です処理のためにプログラムに渡されたばかりです。

メモリ構造に相当するものがあるかどうかは疑問でした。

TYPE MY_RECORD_TYPE IS RECORD 
(
    CHAR_FIELD1 position(1:20) VARCHAR2(20), 
    NUM_FIELD2 position(21:6) NUMBER(6), 
    FILL_FIELD1 position(28,8) VARCHAR2(8) 
); 

これは、私の場合VB.NETで別のものに渡すための文字列を作成することができますか?

私の全体的な目標は、テーブル内の列データから固定長文字列を作成する最も効率的な方法を考え出すことです。

答えて

0

Virtual Columnsこの情報では分かりにくいかもしれません。テーブル自体に仮想列を定義する - 。興味のあるフィールドを連結しますどの

ALTER TABLE YOUR_TABLE 
ADD (FIXED_STRING char(34) Generated Always as 
(rpad(char_field1, 20,' ') || lpad(num_field1,6,'0') || rpad(' ',8,' '))); 

仮想列が続いなど、インデックスを作成することができます...

+0

ブライアン仮想列は、それが希望のように思えます「select *」が実行されるたびにパフォーマンスが低下するという追加の利点(?)で、私が書いたクエリと同じパフォーマンスヒットを得ています。しかし、私は "仮想コラム"に精通していなかったので、ありがとう、それをさらに調査します。 –

関連する問題