单独SQL可以插入数据 
写入存贮过程,缺插入不了数据,帮忙看看什么原因?//可以插入数据 
INSERT INTO xf_de
    (warehouse, xf_zone, xfnnum, xflnum, xstyle)
    
SELECT DISTINCT warehouse,
                    '',
                    UPPER(SUBSTR(xf_cntshtno, 6, 5)),
                    0,
                    xf_style
      FROM xfcnt
     WHERE xfcode = 'WH1'
       AND xfno = 'PC01'
       AND length(xtno) = 10
       AND xfno not like 'T%';
//写入存贮过程,缺插入不了数据,帮忙看看什么原因 p1 = 'WH1',p2='PC01'
CREATE OR REPLACE PROCEDURE UP_UPDATE(p1 varchar2,p2 varchar2)
AS
BEGIN
--更新表
 INSERT INTO xf_de
    (warehouse, xf_zone, xfnnum, xflnum, xstyle)
    
SELECT DISTINCT warehouse,
                    '',
                    UPPER(SUBSTR(xfno, 6, 5)),
                    0,
                    xstyle
      FROM xfcnt
     WHERE xfcode = p1
       AND xfno = p2
       AND length(xtno) = 10
       AND xfno not like 'T%';
END;

解决方案 »

  1.   

    没有提交吧
    在后面加上commit;
    没有提交在其它会话是看不见的CREATE OR REPLACE PROCEDURE UP_UPDATE(p1 varchar2,p2 varchar2)
    AS
    BEGIN
    --更新表
     INSERT INTO xf_de
        (warehouse, xf_zone, xfnnum, xflnum, xstyle)
        
    SELECT DISTINCT warehouse,
                        '',
                        UPPER(SUBSTR(xfno, 6, 5)),
                        0,
                        xstyle
          FROM xfcnt
         WHERE xfcode = p1
           AND xfno = p2
           AND length(xtno) = 10
           AND xfno not like 'T%';
         commit;--提交
    END;
      

  2.   

    你没有Commit还有你插入的时候是不是少写了values啊!
      

  3.   

    两个语句 均在PL/SQL Developer手动提交的
      

  4.   

    1.确保你的查询时有结果的
    2.确保commit
      

  5.   

    肯定有手动提交, sql语句执行后手动提交后就有数据,删除后数据后 执行过程,然后提交 没有数据。
      

  6.   

    存储过程加上异常捕捉,看能捕捉到错误?
    或者执行完SHOW ERROR看看,有什么提示
      

  7.   

    用PLSQL工具TEST下,然后把报错截图贴出来。
      

  8.   

    CREATE OR REPLACE PROCEDURE UP_UPDATE(p1 varchar2,p2 varchar2)
    AS
    BEGIN
    --更新表
     INSERT INTO xf_de
        (warehouse, xf_zone, xfnnum, xflnum, xstyle)
        
    SELECT DISTINCT warehouse,
                        '',
                        UPPER(SUBSTR(xfno, 6, 5)),
                        0,
                        xstyle
          FROM xfcnt
         WHERE xfcode = p1
           AND xfno = p2
           AND length(xtno) = 10
           AND xfno not like 'T%';
         commit;--提交END;
      

  9.   

    你这个只是创建了一个存储过程吧,调用以后才可以执行。
    begin
     UP_UPDATE(p1 varchar2,p2 varchar2);
    end;
      

  10.   

    1、insert 等DML语句都需要Commit手工提交
    2、存储过程中不允许有select语句出现,除非是赋值
      

  11.   

    create or replace procedure ins_test
     (p_result out number)
    is
     begin
     p_Result:=0;    insert into testtable(usid,usname)
        select fuserid,fusername from tusers where fuserid like '1018%';
        p_result:=sql%rowcount;
     end ins_test;加一个  p_result:=sql%rowcount;
    看看返回结果  sql%rowcount;  影响行数
    如果>0,表示有数据插入