私は、パラメータによってVARCHAR2型の数値を受け取り、 'HH24:MI:SS'という形式で1時間を返すPL/SQL関数をコーディングしようとしています。例:パラメータ '6'で送信すると、関数は06:00:00を返します。問題は関数がNULL値を返すことですが、単純なPL/SQLブロックに同じプロセスを書き込むとうまく動作します。あなたは何か考えていますか?感謝:)PL/SQLなぜ私の関数は 'HH24:MI:SS'形式の値ではなくNULL値を返しますか?
CREATE OR REPLACE FUNCTION format_hour_test (
p_hour VARCHAR2)
RETURN VARCHAR2
IS
v_hour_time TIMESTAMP;
v_hour_char VARCHAR2(50);
BEGIN
IF
REGEXP_LIKE(p_hour, '(0-9)') THEN
v_hour_time := TO_TIMESTAMP(p_hour, 'HH24');
END IF;
v_hour_char := TO_CHAR(v_hour_time, 'HH24:MI:SS');
RETURN v_hour_char;
END format_hour_test;
/
SHOW ERRORS;
私は同じプロセスでanonymusブロックを記述する場合、これは正常に動作します。
SET SERVEROUTPUT ON
DECLARE
v_hour VARCHAR2(20) := '6';
v_hour_time TIMESTAMP := TO_TIMESTAMP(v_hour, 'HH24');
v_result VARCHAR2(20) := TO_CHAR(v_hour_time, 'HH24:MI:SS');
BEGIN
DBMS_OUTPUT.PUT_LINE(v_result);
END;
あなただけの(フォーマット済み)のテキストを使用することができたときに画像を使用しないでください。 –
ありがとうアレックス。結果を表示するためだけに画像を貼り付けました。 –
基本的なデバッグでは、 'if'条件が満たされていないことがわかりました。これは正規表現の質問に絞っていました。 –