insert into jr_xmzyzdsyj
  (xmid, yjlx, fxmc, fxyj, time, yjid)
select 
  'xm0205254', 01, 01, '555454', sysdate,( DEPT_DEPTID_ZYZDSYJ.nextval)
from dual
UNION ALL
select 
  'xm0205254', 01, 02, '', sysdate, DEPT_DEPTID_ZYZDSYJ.nextval
from dual如题,DEPT_DEPTID_ZYZDSYJ.nextval是序号,在这不能用,求相同功能的语句

解决方案 »

  1.   

    数据库中建立SEQUENCE了吗?
    我试着好用呢。
    CREATE SEQUENCE NTEMSS.DEPT_DEPTID_ZYZDSYJ 
    INCREMENT BY 1 
    START WITH 1 
    NOMAXVALUE 
    NOMINVALUE 
    NOCYCLE 
    NOORDER 
    CACHE 20
    /
      

  2.   

    嵌套一层
    INSERT INTO jr_xmzyzdsyj (xmid, yjlx, fxmc, fxyj, time, yjid)
      SELECT t.*,DEPT_DEPTID_ZYZDSYJ.NEXTVAL FROM (
      SELECT 'xm0205254' xmid, 01 yjlx, 01 fxmc, '555454' fxyj, SYSDATE time FROM DUAL UNION ALL
      SELECT 'xm0205254', 01, 02, '', SYSDATE FROM DUAL
      ) t
      

  3.   

    报错啊,ora-00287: 此处不允许序号
      

  4.   

    以下情况下,序列无法使用
    ■ A subquery in a DELETE, SELECT, or UPDATE statement
    ■ A query of a view or of a materialized view
    ■ A SELECT statement with the DISTINCT operator
    ■ A SELECT statement with a GROUP BY clause or ORDER BY clause   
    ■ A SELECT statement that is combined with another SELECT statement with the
    UNION, INTERSECT, or MINUS set operator  --问题所在
    ■ The WHERE clause of a SELECT statement
    ■ The DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement
    ■ The condition of a CHECK constrain
      

  5.   

    也就是序列没法使用在union语句中,楼主还是写多个insert语句吧
      

  6.   

    INSERT INTO jr_xmzyzdsyj (xmid, yjlx, fxmc, fxyj, time, yjid) values ('xm0205254', 01, 02, '', SYSDATE);INSERT INTO jr_xmzyzdsyj (xmid, yjlx, fxmc, fxyj, time, yjid) values ('xm0205254', 01, 01, '555454', SYSDATE);分号处报错:无效字符
      

  7.   

    你的insert列表下有6个字段,values后面只有5个。应该对应好字段数和字段类型类型
      

  8.   

    如果是从别的表插入的话,可以写成下面的样子。select aa.F1 ,
    sysdate,
    (DEPT_DEPTID_ZYZDSYJ.nextval)
    from TEST aa
      

  9.   

    求解决:
          1.直接插入报:无效字符 ;
          2.用union 或union all报:此处不能使用序号
      

  10.   

    之前的回复就跟你说过不能使用序列的情况了,见9楼
    用UNION, INTERSECT,  MINUS合并的select语句中是无法使用序列的!!!
    直接插入数据的时候,检查字段数量和字段类型是否匹配
      

  11.   

    insert into jr_xmzyzdsyj  (xmid, yjlx, fxmc, fxyj, time, yjid) values ( 'xm0205254', 01, 01, '555454', sysdate, DEPT_DEPTID_ZYZDSYJ.nextval);insert into jr_xmzyzdsyj  (xmid, yjlx, fxmc, fxyj, time, yjid) values   ('xm0205254', 01, 02, '', sysdate, DEPT_DEPTID_ZYZDSYJ.nextval) ;
    1楼那个和这个
      

  12.   

    Quote: 引用 9 楼 yinan9 的回复:

    以下情况下,序列无法使用
    ■ A subquery in a DELETESELECT, or UPDATE statement
    ■ A query of a view or of a materialized view
    ■ A SELECT statement with the DISTINCT operator
    ■ A SELECT statement with a GROUP BY clause or ORDER BY clause   
    ■ A SELECT statement that is combined with another SELECT statement with the
    UNIONINTERSECT, or MINUS set operator  --问题所在
    ■ The WHERE clause of a SELECT statement
    ■ The DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement
    ■ The condition of a CHECK constrain 
    quote]
    +++++1
      

  13.   

    一楼的肯定是有问题的。
    yjlx,fxmc这两个是什么类型的
      

  14.   

    -- Create table
    create table JR_XMZYZDSYJ
    (
      XMID VARCHAR2(10) not null,
      YJLX VARCHAR2(10),
      FXMC VARCHAR2(10),
      FXYJ VARCHAR2(1000),
      TIME DATE,
      YJID NUMBER not null
    )
    tablespace USERS
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 1M
        minextents 1
        maxextents unlimited
      );
      

  15.   

    终于知道你的问题了
    你把两个语句写在一行了,分号之后换行,像下面
    insert into jr_xmzyzdsyj
      (xmid, yjlx, fxmc, fxyj, time, yjid)
    values
      ('xm0205254', '01', '01', '555454', sysdate, DEPT_DEPTID_ZYZDSYJ.nextval);
    insert into jr_xmzyzdsyj
      (xmid, yjlx, fxmc, fxyj, time, yjid)
    values
      ('xm0205254', 01, 02, '', sysdate, DEPT_DEPTID_ZYZDSYJ.nextval);
      

  16.   

    在java里执行的时候是用executeUpdate一次执行的,换不了行
      

  17.   

    你放sql的字符串里边就不能有换行符?这种问题我都无力吐槽了
      

  18.   

    你java里面怎么定义执行sql的,贴出来
      

  19.   

            localConn = DataSource.getDataSource();
            localPs = localConn.prepareStatement(sql.toString());
            localRs = localPs.executeQuery();