関数にSQLクエリがあります
SELECT DISTINCT (product_id)
INTO prod
FROM products
WHERE mfg_no = 'TEL'
AND status = p_status
product_id が null になるか、p_status にデータがない場合があります。この関数のため、値は返されません。
product_id を確認するために nvl,decode および case ステートメントを試しましたが、どれも機能しませんでした。product_id が null または空の場合でも、関数が正常に実行されるようにするにはどうすればよいですか?
次のような EXCEPTION ブロックで値を返そうとしましたが、どちらも役に立ちませんでした。
EXCEPTION
WHEN NO_DATA_FOUND
THEN
prod := 'NA';
編集 1
CREATE OR REPLACE FUNCTION my_function (p_status VARCHAR2)
RETURN VARCHAR2
AS
prod VARCHAR2 (2000);
BEGIN
prod := NULL;
SELECT DISTINCT (product_id)
INTO prod
FROM products
WHERE mfg_no = 'TEL' AND status = p_status;
RETURN prod;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
prod := 'N/A';
DBMS_OUTPUT.put_line ('no data found ' || SQLERRM);
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('error ' || SQLERRM);
prod := 'N/A';
END;