2012-06-19 62 views
1

我有一個EXT JS頁面,它發送帶有一些值的表單。這些值全部以字符串形式發送,有些則以布爾形式發送。它調用一個PL/SQL過程,其中參數都是varchar。出於某種原因,當提交表單時,即使某些值以布爾值的形式發送,它們也不能作爲布爾值接收。從過程收到的所有值都是varchar;否則它會崩潰。PL/SQL將字符串轉換爲布爾值

所以我從窗體發送布爾值到過程。當它到達過程時,它現在是一個varchar。我怎樣才能將它轉換回布爾值?

任何幫助在所有讚賞,我覺得我在這裏做錯了什麼。我不明白爲什麼它將它作爲varchar接收。

+0

我不明白:*什麼*將參數從布爾轉換爲varchar?你可以發佈一些代碼嗎? –

+0

這不是我做的,我相信它在後臺。我發送一個布爾值,不知何故,當它發送時它會被轉換爲一個varchar。我發現了一個工作:在這個過程中,我會說如果value =「true」,那麼設置一個布爾值爲true。我想我會用這種方法,因爲我不認爲我可以控制轉換髮生,我不認爲有可能將varchar轉換爲布爾值。無論如何託尼。 – user1375026

+0

OK,現在已經回答了。 –

回答

3

你是正確的,沒有甲骨文內置字符串到布爾函數,但你可以很容易地創建一個自己:

create or replace function to_boolean 
    (p_string varchar2 
) return boolean 
is 
begin 
    return 
    case upper(p_string) 
     when 'TRUE' then true 
     when 'FALSE' then false 
     else null 
     end; 
end; 

(其中「其他空」是多餘的,但我把它放在那裏提醒你如果upper(p_string)不是'TRUE'或'FALSE',那麼函數將返回null)。

您當然可以增強函數來將其他字符串值視爲true或false。 'T','是',...