--1.my_test1
create or replace procedure my_test1(id in varchar2)
as 
name varchar2(10);
begin 
select employee_name into name from employees where employee_id=id;
DBMS_OUTPUT.PUT_LINE(name);
end my_test1;----------------------------------------------------------
execute my_test1('1');程序报错
ORA-01403: 未找到数据
ORA-06512: 在"SYS.MY_TEST1", line 5
ORA-06512: 在line 1
但是employee_id=1,是有结果的
-----------------------------------------------------------
-----------------------------------------------------------
--2.test
create or replace procedure testas
 
     v_month  varchar2(2):= to_char(sysdate,'mm');
     v_nm  number(2):=to_number(v_month);begin
     
     dbms_output.put_line(v_nm);end ;
----------------------------------------------------
declare
begin 
procedure test;     
end;
-----------------------------------------------------
请问,为何出现如上错误?
存储过程是否有问题?
pl/sql里到底该采用那种方式来执行存储过程(默认in输入参数时)

解决方案 »

  1.   

    declare
    begin
     test;   
    end; 
      

  2.   

    declare 
    begin 
    procedure test;    
    end; 改成declare 
    begin 
    test;    
    end; 
      

  3.   

    第一个怀疑要么字段类型不对是number型的要么1没有
      

  4.   

    create or replace procedure my_test1(id in varchar2 /*这是number?*/) 
    as 
    name varchar2(10); 
    begin 
    select employee_name into name from employees where employee_id=id; 
    DBMS_OUTPUT.PUT_LINE(name); 
    exception
      when no_data_found then
             dbms_output.put_line('没找到数据,你输入的id在表中不存在');
    end my_test1; 
      

  5.   

    换成number类型的,虽然是成功了
    但是没有返回值
    已经set serveroutput on 了的
    我原表的employee_id是varchar2的
      

  6.   

    my_test1是输出了,感谢楼上两位
    但是,test怎么看到输出结果?--------------
    declare 
    begin 
    test;    
    end; 
    --------------
      

  7.   

    scott@STUDY> create or replace procedure test
      2  
      3  as
      4  
      5      v_month  varchar2(2):= to_char(sysdate,'mm');
      6      v_nm  number(2):=to_number(v_month);
      7  
      8  begin
      9  
     10      dbms_output.put_line(v_nm);
     11  
     12  end ;
     13  /过程已创建。scott@STUDY> declare
      2  begin
      3  test;
      4  end;
      5  /
    10PL/SQL 过程已成功完成。