v_username out varchar2你先改成v_username in varchar2应该就可以执行了差别就在in 和 out~~   百度下 就知道区别啦~  out是要带回来的

解决方案 »

  1.   


    out的参数是返回的结果,应该不能改成in吧?
    如果在sqlplus下,执行的方法是
    SQL> var c varchar2(20);
    SQL> exec get_username(324,:c)
    SQL> print c;是否在navicat下也需要先定义一个变量才能获得结果呢?
    直接复制过去是执行不了的
      

  2.   

    DECLARE
          TMP varchar2(20);
       BEGIN
         TMP:='a';
        get_username(324,TMP);
        dbms_output.put_line(TMP);
    END ;
    解决了
      

  3.   

    out 参数必须先在外部声明变量,再作为procedure的out参数调用,调用之后即可在后面获取经过procedure处理的out参数变量。
      

  4.   

    --下面就是调用带参数的存储过程:
    bankcurinterestcalculation(var_maxrecorddate,var_idno,benamount => var_benamount4,interest => var_interest4,balance => var_balance4,curbalance => var_curbalance4,sumamount => var_sumamount4,lastbalance => var_lastbalance4)
      

  5.   

    就着楼主的贴子我想问下:
    create or replace procedure REPORTVIEWER_count_type_proc
    (@year int) 
    as 
    begin 
    select distinct  a.r_title,b.rdlc_num y_num_e,null m_num_e,null d_num_e,null m_num_s,null y_num_zf,null m_num_zf
    from REPORTVIEWER a 
    inner join 
    (select sum(rdlc_num) as rdlc_num,rdlc_id,user_id from REPORTVIEWER_count d
    where to_char(d.create_date,'yyyy')=@year group by rdlc_id,user_id) b 
    on b.rdlc_id=a.sid 
    inner join s_hse_ticket e on e.reghumsid=b.user_id
    where e.erifystate='完成'
    end
    这样写在Oralce数据中执行exec提示无效SQL语句
    请问这是为什么?