私の質問は次のとおりです 。Oracle regexp_like は、1 または 0 または文字列と比較する必要なく、where 句で単独で機能します。この関数は、case ステートメントまたは where 句で何かを評価するときにのみ呼び出すことができます。説明できないので(データ辞書で検索してみました)、同じように機能する関数をどのように書くか疑問に思っています。
例えば:
function is_prod
returns boolean
is
l_var boolean := false;
begin
if sys_context('userenv','db_unique_name') = '"PROD_SERVER"' then
l_var := true;
end if;
return l_var;
end;
この関数はコンパイルされますが、次のような SQL ステートメントでは使用できません。
select *
from table t
where is_prod
次のエラーが発生するため: ORA-00920: 関係演算子が無効です。
それを数値または真と比較しても機能しません。
regexp_like のコード ベースはどこにありますか、またはこれを regexp_like のように機能させるにはどうすればよいですか?
注: 数時間調べてみたところ、Oracle の正規表現関数は実際には Java 呼び出しであることがわかりましたが、これは、まだ pl/sql ラッパーが必要であることを意味します。