我在function里建立了:
create or replace function GetUserName(Myuser_account varchar2) return varchar2 is
  Result varchar2(50);
begin
  declare cursor MyCursor is select distinct user_name from tbs_user where user_account =Myuser_account ;
begin
open MyCursor;
  fetch MyCursor into Result;
  close MyCursor;
end;
  return(Result);
end GetUserName;
然后再试图里面调用
create or replace view view_tbp_failureupgrade as
select
t1.SQDWBM,t1.SQRQ,t1.XTBM,t1.LLDBH,t1.GDBH,t1.KF_GZXX,t1.KF_DJRBM,t1.WH1_CLNR,t1.WH1_RYBM,t1.WH1_RYBZBM,t1.WH2_CLNR,t1.WH2_RYBM,t1.WH2_RYBZBM,t1.WH3_CLNR,t1.WH3_RYBM,····
GetUserName(KF_DJRbm) as KF_DJRMC,
GetUserName(WH1_RYbm) as WH1_RYMC,
GetUserName(WH2_RYbm) as WH2_RYMC,
GetUserName(WH3_RYbm) as WH3_RYMC,
GetUserName(KF_HFRbm) as KF_HFRMC,
GetUserName(WH1_JG_DJRYbm) as WH1_JG_DJRYMC,
From TBP_FAILUREUPGRADE t1
他返回放的结果又很多行啊 ,怎么让他就返回table里面对应的一行? 
为什么他会有那么多重复的行???

解决方案 »

  1.   

    你的函数返回结果只能是一行数据,不能是多行数据,否则就报错可以用rownum =1, 将你的函数只返回一行数据
      

  2.   

    就是想让他只返回一行的啊?把rownum =1加载function里面吗?
    我是初学者还请多多指教啊!
      

  3.   

    函数返回一个值没问题
    创建视图的语句可以使用rownum或distinct来限制返回行数
      

  4.   

     还是要返回很多的值啊?不是一条!!!!
    create or replace function GetUserName(Myuser_account varchar2) return varchar2 is
      Result varchar2(50);
    begin
      declare cursor MyCursor is select distinct user_name from tbs_user where user_account =Myuser_account and  rownum =1;
    begin
    open MyCursor;
      fetch MyCursor into Result;
      close MyCursor;
    end;
      return(Result); 
    end GetUserName;
      

  5.   

    我就是想建一个试图。例如
    t1: mc1 bm1 mc2 bm2 
         1   2   3   4
    t2: xx aa
        1  a
    我建的试图让t1.bm1=t2.xx并且 t1.bm2=t2.xx
    哪位高手知道啊 ,请指点啊!!!!
      

  6.   


    如果t2中的XX都是唯一的就没有问题如果不唯一,返回的行数大于1,就报错了
      

  7.   

    恩 ,做好了 ,就是用rownum =1或者distinct 。谢谢啦。