这是oracle自定义函数:
create or replace function f_Get_sysinfo
(name varchar2,type varchar2)
return varchar
IS
Returns varchar2(100) :='';
begin 
 if type='0' then
   select value into Returns from t_Pd_Sys_Info where name=name;
   else if type='1' then
   select DISPLAY into Returns from t_Pd_Sys_Info where name=name;
   end if;
 end if;
RETURN(Returns);
end f_Get_sysinfo;这是执行语句:select f_Get_sysinfo('ORGID','0') FROM DUAL
如果没有值应该返回的是null或者空,怎么我第一次执行后可以得到正常的值,但我换了变量后,还是返回的第一次得到的值。为什么啊?  各位高手有没有人知道原因?我oracle不懂啊。

解决方案 »

  1.   


    select f_Get_sysinfo('ORGID','0') FROM DUAL
    select f_Get_sysinfo('ORGID','1') FROM DUAL
    这两条语句执行结果一样吗?
      

  2.   


    这个结果是不一样的,但是执行后,换个变量
    比如:
    select f_Get_sysinfo('ORGID','0') FROM DUAL  返回:44032
    select f_Get_sysinfo('ORGID','1') FROM DUAL  返回:'名称'
    然后:
    select f_Get_sysinfo('TZS_CXQZ','0') FROM DUAL  返回的还是:44032
    select f_Get_sysinfo('TZS_CXQZ','1') FROM DUAL  返回的还是:'名称'
    数据库中应该是:001  和  张翼   两个值
      

  3.   

    改改參數名稱試一下:create or replace function f_Get_sysinfo
    (p_name varchar2,type varchar2)
    return varchar
    IS
    Returns varchar2(100) :='';
    begin  
     if type='0' then
      select value into Returns from t_Pd_Sys_Info where name=p_name ;
      else if type='1' then
      select DISPLAY into Returns from t_Pd_Sys_Info where name=p_name ;
      end if;
     end if;
    RETURN(Returns);
    end f_Get_sysinfo;
      

  4.   

    这里可能有点问题
    select value into Returns from t_Pd_Sys_Info where name=name;变量名和字段名不要用同样的名字,这样可能带来问题。