PL/SQL将字符串转换为布尔值

3
我有一个EXT JS页面,它发送了一个带有一些值的表单。这些值都以字符串形式发送,其中一些以布尔值形式发送。它调用一个PL/SQL过程,其中所有参数都是varchar类型。由于某种原因,当提交表单时,即使某些值被发送为布尔值,也无法将其作为布尔值接收到过程中。从过程中接收到的所有值都是varchar类型;否则会导致崩溃。
所以我正在从表单向过程发送一个布尔值。当它到达过程时,它现在是一个varchar类型。如何将其转换回布尔值?
非常感谢任何帮助,我觉得我在这里做错了什么。我不明白为什么它会将其接收为varchar类型。

我不明白:是什么将参数从布尔型转换为varchar?你能贴一些代码吗? - Tony Andrews
不是我在做这件事,我相信这是在后台进行的。我发送了一个布尔值,但在发送时它被转换为 varchar。我找到了一个解决方法:在存储过程中,我只需要说如果值等于 "true",那么将布尔值设置为 true。我想我会采用这种方法,因为我认为我无法控制正在发生的转换,并且我认为将 varchar 转换为布尔值是不可能的。无论如何,谢谢 Tony。 - user1375026
1个回答

4

您说得对,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',…


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接