declare
    v_dwbh number;
begin
    select max(dwbh)+1 into v_dwbh from jc_dwml;
    insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) 
    values (v_dwbh,'30439573095','44000001000011', '广东省公安厅办公室', 1, 2, '0', 1)end;
/

解决方案 »

  1.   

    sql没有问题,放在begin ... end也没有问题把错误信息贴出来
      

  2.   

    PL/SQL语句块的最大优点就是可以使用临时变量,一个语句中不能完成的你就分多个语句来完成。写多几句,更条理。另外在INSERT INTO 语句中不能重复用VALUES和SELECT。
    SELECT语句本身是一条记录集,用INSERT INTO .... SELECT ....就可以了。
    如果用VALUES就不能用SELECT。insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) 
    select max(dwbh)+1,'30439573095', '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1
    from jc_dwml ;
      

  3.   

    可是为什么
    insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) values ((select max(dwbh)+1 dwbh from jc_dwml), '30439573095', '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1)行begin insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) values ((select max(dwbh)+1 dwbh from jc_dwml), '30439573095', '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1);end;就不行呢错误代码如下ORA-06550: 第 1 行, 第 91 列: 
    PLS-00103: 出现符号 "SELECT"在需要下列之一时:
    (-+modnotnullothers
       <an identifier><a double-quoted delimited-identifier>
       <a bind variable>avgcountcurrentexistsmaxminpriorsqlstddev
       sumvarianceexecuteforalltimetimestampintervaldate
       <a string literal with character set specification>
       <a number><a single-quoted SQL string>
    ORA-06550: 第 1 行, 第 128 列: 
    PLS-00103: 出现符号 ","在需要下列之一时:
    ;returnreturningandor
    ORA-06550: 第 1 行, 第 199 列: 
    PLS-00103: 出现符号 "END"在需要下列之一时:
    beginfunctionpackagepragma
       proceduresubtypetypeuse<an identifier>
       <a double-quoted delimited-identifier>cursorformcurrent
      

  4.   

    规整格式如下也不行
    begin 
        insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) 
        values ((select max(dwbh)+1 dwbh from jc_dwml), 
            '30439573095', '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1);
    end;
      

  5.   

    好像是begin ... end;中的insert语句中不能有select,请大家不用我的语句帮我试试
      

  6.   

    你在command windows中做还是在sql windows中做?
      

  7.   

    oracle 版本是多少?
    我在9i里面完全按照你的sql做,一点问题没有
    pl/sql developer 版本:5.1.4.729
      

  8.   

    Oracle8i Enterprise Edition Release 8.1.7.0.0
    PL/SQL Developer Version 5.0.1.480
      

  9.   

    查阅了oracle的文档,发现oracle9.0.1才在pl/sql中完全支持sql语法,原文如下:Release 1 (9.0.1)
    Integration of SQL and PL/SQL parsers PL/SQL now supports the complete range of syntax for SQL statements, such as INSERT, UPDATE, DELETE, SELECT, and so on. If you received errors for valid SQL syntax in PL/SQL programs before, those statements should now work
      

  10.   

    begin insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) select max(dwbh)+1 , '30439573095', '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1 from jc_dwml;end;以上写法没问题