2012-07-13 5 views
5

つの列と1行を持つテーブルを使用して作成することができます。Oracleでテーブルリテラルを書き込む方法は?

select 'create' as col from dual; 

これは、テーブルを構築するために使用することができますが加わり:

with 
    a as (select 'create' as ac from dual), 
    b as (select 'delete' as bc from dual) 
select * from a left outer join b on (ac = bc); 

今私は2つの行を持っていると思います。私はこのようにしました:

select 'create' as col from dual 
union 
select 'delete' as col from dual; 

しかし、これはもっとコンパクトな表記ですか?試しました

select ('create', 'delete') as col from dual; 

しかし、動作しません。

+0

特定の文字列が必要ですか?またはランダム(ish)のもの? – Randy

+0

@Randy:ランダム。たとえば、「作成」および「削除」。 – ceving

答えて

9

SELECT roWnum AS a 
    FROM user_objects 
    WHERE rownum <= 3 

あなたは、階層クエリを使用することができます:あなたは、多数の行を持つテーブルに対して、ROWNUM使用することができます

たとえば、コレクション型およびTABLE演算子を使用できます(Oracle 10gで動作)。

SQL> SELECT column_value FROM TABLE(SYS.ODCIVARCHAR2LIST('abc', 'def', 'ghi')); 

COLUMN_VALUE 
-------------------------------------------------------------------------------- 
abc 
def 
ghi 
2

いくつかの方法で行を生成します。

SELECT level AS a 
    FROM dual 
    CONNECT BY LEVEL <= 3 

EDIT:変更のint型のシーケンスアルファ配列に:

SELECT CHR(ASCII('a') + level - 1) 
    FROM dual 
    CONNECT BY LEVEL <= 3 
+0

申し訳ありません私の例では整数を使用しましたが、実際には文字列が必要です。 – ceving

+0

もう一度申し訳ありません。テーブルデータは計算できません。 – ceving

関連する問題