各位高手看一下这个问题用存储过程可以解决吗?
总共3个存过程
GET_NM 取最大内码的存储过程(MAX_NM)
SQL: SELECT MAX(TO_NUMBER(NM) FROM DJ_BT 取出最大内码是'112'ADD_DJ_BT 增加表头的存储过程(带参数,需要调用GET_NM 中定义的MAX_NM)
ADD_DJ_BT(单据编号,单据日期,单位编号,备注).....
SQL:INSERT INTO DJ_BT(内码,单据编号,单据日期,单位编号,备注) values ('112',@单据编号,@单据日期,@单位编号,@备注)
ADD_DJ_BT2 增加表体的存储过程(带参数,需要调用GET_NM 中定义的MAX_NM)
ADD_DJ_BT2(物料编号,物料名称,数量,单价,金额)
SQL:INSERT INTO DJ_BT2(物料编号,物料名称,数量,单价,金额) values ('112',@物料编号,@物料名称,@数量,@单价,@金额)
请问在ADD_DJ_BT和ADD_DJ_BT2中可以调用GET_NM中的返回结果吗?Create proc add_dj_bt
  @内码 char(10),@单据编号 varchar(20),@单据日期 CHAR(8) ,@单位编号 char(8),@备注 char(40)
   as
 begin
    内码:='112';--------------如何使内码等于固定的从GET_NM中取出的MAX_NM值.
   insert into dj_bt(内码,单据编号,单据日期,单位编号,备注) Values(@内码,@物料编号,@物料名称,@数量,@单价,@金额)
   end add_dj_bt;刚开始学习ORACLE,还望各位高手详细指点.非常谢谢!

解决方案 »

  1.   

    可以的create   or   replace   procedure   add_dj_bt(djbh   in   varchar2,   djrq   in   varchar2,   dwbh   in   varchar2,   bz   in   varchar2)   as   
        nm   varchar2(10); 
    begin 
        nm   :=   GET_NM; 
        或者直接写   sql   
        select   MAX(TO_NUMBER(NM))   into   nm   FROM   DJ_BT;       insert   into   dj_bt(内码,单据编号,单据日期,单位编号,备注)Values(nm,djbh,djrq,dwbh,bz);   end;
      

  2.   

    是啊,直接
    SELECT   MAX(TO_NUMBER(NM)  into XXX FROM   DJ_BT   
    然后用XXX调用就行了