2

我有一个 EXT JS 页面,它发送一个带有一些值的表单。这些值都以字符串形式发送,一些以布尔值形式发送。它正在调用一个参数都是 varchar 的 PL/SQL 过程。由于某种原因,在提交表单时,即使某些值作为布尔值发送,程序也无法将它们作为布尔值接收。从过程中接收到的所有值都是 varchar;并且必须否则它会崩溃。

所以我从表单向程序发送一个布尔值。当它进入程序时,它现在是一个 varchar。如何将其转换回布尔值?

任何帮助都表示赞赏,我觉得我在这里做错了什么。我不明白为什么它将它作为 varchar 接收。

4

1 回答 1

3

您是对的,没有 Oracle 内置的字符串到布尔函数,但您可以轻松地自己创建一个:

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;

(“else null”是多余的,但我把它放在那里是为了提醒您,如果 upper(p_string) 不是 'TRUE' 或 'FALSE' 则该函数将返回 null)。

您当然可以增强函数以将其他字符串值视为真或假,例如'T'、'YES'、...

于 2012-06-19T09:54:52.167 回答