2017-01-23 45 views
0

返回布爾值試圖從功能從Oracle功能

create or replace function compairenumber(num1 in number,num2 in number) 
return boolean is 
begin 
if num1 < num2 then 
return true; 
else 
return false; 
end if; 
end; 
當我從雙 給查詢 選擇compairenumber(5,10)它不是返回true或false

返回值。

回答

5

布爾值只能用於Oracle SQL中的其他PL/SQL代碼,而不是。如果你需要一個返回值爲select ... from dual的函數,那麼你將需要定義函數返回varchar2,返回值分別爲'true''false'(或'T''F'或返回值,值爲1和0)。

作爲悲傷,因爲這是,的Oracle SQL不支持布爾數據類型(儘管編程語言PL/SQL一樣)。

+0

所以這意味着我應該寫這樣的事情 創建或替換功能compairenumber(數量NUM1,NUM2數量) 返回VARCHAR是 開始 如果NUM1 ashish

+0

@ashish - 完全。除了在Oracle中,使用'varchar2'數據類型而不是'varchar'更好(現在)。 – mathguy

+0

我更喜歡這個答案,因爲它解釋了爲什麼你不能在這種情況下使用BOOLEAN。 – BriteSponge

0

使用回VARCHAR2

create or replace function compairenumber(num1 in number, num2 in number) 
    return varchar2 is 
begin 
    if num1 < num2 then 
    return 'TRUE'; 
    else 
    return 'FALSE'; 
    end if; 
end; 


select CASE 
     WHEN compairenumber(5, 10) = 'TRUE' THEN 
      'OK' 
     ELSE 
      'NOT' 
     END 
    from dual