Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

pl/sql のboolean型を画面に出力したい

859671May 23 2011 — edited May 25 2011
お世話になっております。

掲題の通り、pl/sqlブロック内で定義したbooleanを戻すfunctionを作成したいのですが、
boolean型を何とかして、キャラに変換できませんか?

変換関数を探しても見つからず、現在、↓の用にラッパを作っていますが、イマイチ
すっきりしません。直接booleanを変換する方法は無いでしょうか?
ちなみにis_universe()関数はpl/sql内のパッケージからも呼ばれるので戻り値は
出来ればこのままが良いような気がします。それとも、呼び出し側に戻す時の戻り値は
boolean型は使わず、テキストでTRUE/FALSEを返すほうが良いのでしょうか?

①create or repalce function is_universe( pi_code in varchar2 )
is
t_code varchar2;
begin
select code into t_code from test1 where code=pi_code;
if t_code is not null then
return true;
else
return false;
excepion
when others then
return false;
end ;

②create or replace function is_universe_text( pi_code in varchar2)
is
t_ret varchar2;
begin
if is_universe(pi_code) = true then
t_ret := 'TRUE' ;
else
t_ret := 'FALSE';
end ;

Comments

tmtsmic
こんにちは。

私だったら無理にbooleanを使用せず

 if t_code is not null then
  return 1;
 else
  return 0;
 excepion
  when others then
   return 9;
 end ;

みたいに数字でフラグを返しちゃいますが
true、falseじゃないと問題があるのでしょうか?


#Oracle Database PL/SQL言語リファレンス 11gリリース2(11.2)
http://download.oracle.com/docs/cd/E16338_01/appdev.112/b56260/datatypes.htm#CJACJGBG

上記リンクにもありますけど
表示させるには別の型に変換が必要なようですね。

SQLで受け取れなかったり、TO_CHARでも変換が無理だったりするので、
個人的にはあまりオイシイ使い道が無い感じがします。
859671
true、falseじゃないと問題があるのでしょうか?
いえ、特に無いです。
pl/sqlにboolean型が定義されていたので使ったほうが
「ちゃんと」しているのかな、と考えただけです。
ですが、暗黙の型変換もかからないしなんか使いにくい・・・

やはりnumberにした方が良いのかな
860993
pls_Integer型,boolean型などは、
PL/SQLの中だけで完結しないのであれば、
number型にするのがよいと思いますよ。

変換メソッドを作るのも面倒ですし
859671
やはり、変換する方法はないのでしょうか?
145973
マニュアル『Oracle Database SQL言語リファレンス』に、次のような記述が
あります。

----------------------------------------------------------------------
Oracle SQLは、ブール値のパラメータまたは戻り値を持つファンクションのコ
ールをサポートしていません。したがって、ユーザー定義ファンクションが
SQL文からコールされる場合は、数値(0または1)または文字列('TRUE'また
は'FALSE')を戻すように設計する必要があります。
----------------------------------------------------------------------
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/functions256.htm

これが、今回の問いに対する答えではないでしょうか。
860993
user6712101 wrote:
やはり、変換する方法はないのでしょうか?
Javaのように、勝手にtoStringメソッドを読んでくれるようになる日がくるまでは、
そうするしかないと思いますね。
859671
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/functions256.htm
なんと、こんなにはっきりと記述が。。。

ありがとうございました。
ブール値を使うのは止めることにします。
1 - 7
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Jun 22 2011
Added on May 23 2011
7 comments
10,731 views