编写一个过程。要求有一个IN参数和一个OUT参数。IN参数用于接受传递过来的借书证条码,然后在表T_user(用户表中)检索有无该读者,如有则将该读者的名称赋给OUT参数。如没有则提示信息“没有找到该读者” .
写出全过程者给高分!还有,各位高手?怎么在select语句中根据一个字段判断另外一个字段为空啊? 
  
或者说是在pl/sql中或者是在select语句中判断一个字段为空  也可以!
(注意:  环境oracle9.i)

解决方案 »

  1.   

    create or replace procedure get_user_name( v_UserCode in char, v_UserName out char) is
    begin
      select  DECODE (tu.username, 'NULL', '没有找到该读者', tu.username) into  v_UserName  from T_user  tu where tu.usercode = v_UserCode;
    end get_user_name;
      

  2.   

    CREATE OR REPLACE PROCEDURE test
    (in_code IN VARCHAR2,
    out_code out varchar2
    )
    ISBEGIN
       
       select name into 
              out_code
           from t_user
           where code=in_code  ; 
       
       
       EXCEPTION
         WHEN NO_DATA_FOUND THEN
           out_code:='没有找该读者';
         WHEN OTHERS THEN
           -- Consider logging the error and then re-raise
           RAISE;
    END test;
    /
      

  3.   

    不用异常也可以做,不过要用两句SQL
    第一句,先用count(*)来判断有没有纪录,没有的话,直接输出没有该读者,=1就再搜索下名字
      

  4.   

    调用存储过程的时候exec get_user_name(3, ?);
    这个out模式的参数怎么传啊?
      偶不会?
    怎么老是ORA-06550: 第 2 行, 第 18 列: 
    PLS-00201: 必须说明标识符 'OUT'
    ORA-06550: 第 2 行, 第 1 列: 
    PL/SQL: Statement ignored
      

  5.   

    还有就是我直接在存储过程的图标上测试的时候:
      右击test ,传入一个只有书编号,没有读者的一行信息的编号时.
       怎么没有"'没有找该读者'; "的提示
          这个'没有找该读者'; 显示在哪?
           偶是第一次接触oracle,不要见笑!
      

  6.   

    out 参数要事先定义个变量的再传进去的
    其实你这用自定义函数就行了
    CREATE OR REPLACE FUNCTIONtest 
    (in_code  VARCHAR2, ) 
    RETURN varchar2
    IS 
    out_code  varchar2(100) ;BEGIN 
        
       select name into  
              out_code 
           from t_user 
           where code=in_code  ;  
        
        return out_code;
       EXCEPTION 
         WHEN NO_DATA_FOUND THEN 
           return '没有找该读者'; 
         WHEN OTHERS THEN 
           -- Consider logging the error and then re-raise 
           RAISE; 
    END test; select test('3') from dual
      

  7.   

    也就是说存在纪录没空名的情况CREATE OR REPLACE FUNCTIONtest 
    (in_code  VARCHAR2, ) 
    RETURN varchar2
    IS 
    out_code  varchar2(100) ;BEGIN 
        
       select nvl(name,'没有找到该读者') into  
              out_code 
           from t_user 
           where code=in_code  ;  
        
        return out_code;
       EXCEPTION 
         WHEN NO_DATA_FOUND THEN 
           return '编号不存在'; 
         WHEN OTHERS THEN 
           -- Consider logging the error and then re-raise 
           RAISE; 
    END test; 
      

  8.   

    判断是否NO_DATA_FOUND 很必要