2

いくつかの値を含むフォームを送信するEXTJSページがあります。値はすべて文字列で送信され、一部はブール値として送信されます。これは、パラメータがすべて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」など、他の文字列値を true または false として扱うように関数を拡張することもできます。

于 2012-06-19T09:54:52.167 に答える