1

テーブルを作成し、それを範囲でパーティション分割してから、ハッシュでサブパーティション化しようとしています。しかし、私はエラーが発生しています。スクリプトの何が問題なのか疑問です。レンジ パーティションを行う場合、以下の例のように、ハッシュに異なる数のサブパーティションを指定できます (パーティション OTHER_1 には 3 つのサブパーティションがあり、他のすべてのパーティションには 2 つのサブパーティションがあります)。

CREATE TABLE ACCOUNTHOLDER_P (id INT, purchased DATE, OBJECT_TYPE VARCHAR2(50), PHONE_NUMBER VARCHAR2(50))

PARTITION BY RANGE (OBJECT_TYPE)
SUBPARTITION BY HASH(PHONE_NUMBER) (

PARTITION PARTNER_1 VALUES LESS THAN ('||''''||'Partner%'||''''||')  TABLESPACE USERS (     
  SUBPARTITION sp1 TABLESPACE ABC,
  SUBPARTITION sp2 TABLESPACE ABC
  ),

PARTITION CONSUMER_1 VALUES LESS THAN ('||''''||'User%'||''''||')   TABLESPACE USERS ( 
  SUBPARTITION sp3 TABLESPACE XYZ,
  SUBPARTITION sp4 TABLESPACE XYZ
  ),

PARTITION OTHER_1 VALUES LESS THAN (MAXVALUE)   TABLESPACE USERS (
  SUBPARTITION sp5 TABLESPACE KLM,
  SUBPARTITION sp6 TABLESPACE KLM,
  SUBPARTITION sp7 TABLESPACE KLM
  ));

エラー :

SQL Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause:
*Action:

ありがとう

よろしく、

時代

4

2 に答える 2

3

些細な...

KLM,
   ^ that's the problem

コメント後の更新:

それらの一重引用符を確認してください。それらをパーティショニング値、またパーセンテージ記号に属させるかどうかは明確ではありません。多分代わりに

PARTITION PARTNER_1 VALUES LESS THAN ('||''''||'Partner%'||''''||')

それはまさにあなたが望むことをするでしょう:

PARTITION PARTNER_1 VALUES LESS THAN ('Partner')

2 番目のコメントの後に更新します。

私はあなたがそのようなものを探しているかもしれないと推測することができます:

select '||'''||'User%'||'''||' from dual;

||'User%'||

ただし、それをパーティショニング値として使用しても意味がありません。あなたが達成しようとしていることを説明してください。

于 2013-06-18T07:21:51.747 に答える