PL/SQLでレコード0件の場合

ちょっと悩み中です。もう少しシンプルにできないかな?と。


DECLARE
nID INTEGER;
BEGIN
SELECT 0 INTO nID FROM DUAL WHERE ROWNUM = 0;
END
;

上記を実行しようとすると、レコードがありませんので、
「ORA-01403: データが見つかりません。」とのエラーになります。
回避策として、


DECLARE
nCount INTEGER;
nID INTEGER;
BEGIN
SELECT COUNT(*) INTO Count FROM DUAL WHERE ROWNUM = 0;
IF ( nCount > 0 ) THEN
SELECT 0 INTO nID FROM DUAL WHERE ROWNUM = 0;
END IF;
END
;
とすれば、レコードがある場合だけ実行される分岐となります。

ただ、これだとカウントを数えるSQLとフィールドを変数に代入するSQL、同一のSQLをコーディングすることになります。なんか、シンプルな方法がないかなーと悩み中です。