如果Oracle

时间:2015-11-11 21:16:16

标签: database oracle plsql

我有一个名为CustomerDetails的表:

DeletKey | ReplacedKey

CID0001 | CUSTID01

CID0002 | CUSTID02

CID0003 | (NULL)

当给予函数的输入是CID0001,CID0003

输出应为CUSTID01,CID0003。

当CID0001替换为CUSTID01且CID0003为空时,它应该返回输入值。

如何在plsql中编写具有多个输入值的函数。删除并替换输入的客户ID后,应返回替换的客户ID。 如果没有替换它(ReplacedKey为NULL),它应该打印输入值。

我的代码:没有输入。我该如何为此添加输入值?

create or replace function ChangeList
as
cursor c1
select replaced ReplacedKey.CustomerDetails%type
deleted DeletKey.CustomerDetails%type
from CustomerDetails;
begin
  open c1;
   loop ``
     if ReplacedKey is null
     then
     dbms_output.put_line('DeletedKey' ||deleted);
     else
     dbms_output.put_line('ReplacedKey'||replaced);
     end if;
   end loop;
 close c1:
end;

输入prg- Nothing

prg-DelettedKey CID0003的输出         取代Key CUSTID01

我应该给出的输入:CID0001                          CID0003

我需要的输出:CUSTID01                          CID0003

2 个答案:

答案 0 :(得分:2)

你需要的只是一个虚拟的

select NVL(ReplacedKey,DELETKEY) from table

答案 1 :(得分:0)

带参数的函数:

create or replace function ChangeList(p_cid varchar2) return varchar2
as
  ret varchar2;
begin 
  select nvl(ReplacedKey, p_cid) 
  into ret
  from CustomerDetails
  where DeletKey = p_cid;

  return ret;
exception when no_data_found then return 'no data found';
end;