Create table test1(
MSG_TIME DATE,
RECORD_ID NUMBER(10),
SORT_IP NUMBER(10),
  DEST_IP NUMBER(10),
  SORT_PORT NUMBER(10),
  DEST_PORT NUMBER(10),
  PROTOCOL_TYPE NUMBER(3),
  PHY_SORT_IP VARCHAR2(256),
 PHY_DEST_IP VARCHAR2(256),
 USER_NAME VARCHAR2(256),
 PASSWORD VARCHAR2(256),
  DOMAIN VARCHAR2(256),
constraint pri1 primary key(user_name, password, sort_ip, dest_ip))
partition by range(upper (substr(user_name, 0,1)))                      //这里出现错误
{
partition p1 values less than('E'),
partition p2 values less than('I'),
partition p3 values less than('N'),
partition p4 values less than('T'),
partition p5 values less than('X'),
partition p6 values (DEFAULT)
};本人想实现的功能是提取user_name中的第一个字母,然后更换为大写,再写库。报的错误是:
ORA-00907:错误是右括号。谢谢。

解决方案 »

  1.   

    To 楼上:
      谢谢你的回帖,错误出在 partition by range(upper (substr(user_name, 0,1))) 
      报错是:缺失右括号。
      

  2.   

    Create table test1(
    MSG_TIME DATE,
    RECORD_ID NUMBER(10),
    SORT_IP NUMBER(10),
      DEST_IP NUMBER(10),
      SORT_PORT NUMBER(10),
      DEST_PORT NUMBER(10),
      PROTOCOL_TYPE NUMBER(3),
      PHY_SORT_IP VARCHAR2(256),
    PHY_DEST_IP VARCHAR2(256),
    USER_NAME VARCHAR2(256),
    PASSWORD VARCHAR2(256),
      DOMAIN VARCHAR2(256),
    constraint pri1 primary key(user_name, password, sort_ip, dest_ip))
    partition by range(user_name)  
    (
    partition p1 values less than('E'),
    partition p2 values less than('I'),
    partition p3 values less than('N'),
    partition p4 values less than('T'),
    partition p5 values less than('X')
    )
      

  3.   

    partition p6 values (DEFAULT)
    -------------------------
    partition p6 values less than(MAXVALUE)
      

  4.   

    谢谢 shan1119partition p3 values less than('N'),
    ORA-14020 出现错误:不能指定表分区的此物理属性
    另外我只是对第一字母进行比较,直接这样比较可以吗?
      

  5.   

    partition by range(upper (substr(user_name, 0,1)))  可能不可以用函数。没有可以直接根据列的值就能分区的列吗
      

  6.   

    我查了查,好像就是不能用函数,用了就报缺失右括号的错。你确定这样根据第一个字母来分区有意义吗?找个别的列不行吗?如果你确定要这样做,我想只想增加一个字段了,把这个字段的值通过(upper (substr(user_name, 0,1))) 来增加进去,这样就可以利用这个字段来实现分区了。