以下は、テーブルが存在するかどうかを判断し、テーブルを削除/作成する PL/SQL スクリプトです。存在しない場合は、とにかくテーブルを作成します。そのため、スクリプトを実行すると、次のメッセージが表示されました。
ORA-00904: "E": 識別子が無効です
構文は正確で、二重引用符で囲まれた 'E' は正しいと思いましたが、どうやらそうではありませんでした。お知らせ下さい。
ありがとう。
DECLARE
l_cnt NUMBER;
BEGIN
SELECT COUNT(*)
INTO l_cnt
FROM dba_tables
WHERE owner = 'ABCD'
AND table_name = 'SEC_REC_TEMP';
IF( l_cnt > 0 )
THEN
EXECUTE IMMEDIATE 'DROP TABLE sec_rec_temp';
EXECUTE IMMEDIATE 'CREATE TABLE sec_rec_temp
AS
SELECT is.inv_num
FROM abcd.inv_summ is
,abcd.bill_fee bf
WHERE is.inv_num = bf.inv_num
AND trim(bf.fee_type) = "E"
GROUP BY is.inv_num';
ELSE
EXECUTE IMMEDIATE 'CREATE TABLE sec_rec_temp
AS
SELECT is.inv_num
FROM abcd.inv_summ is
,abcd.bill_fee bf
WHERE is.inv_num = bf.inv_num
AND trim(bf.fee_type) = "E"
GROUP BY is.inv_num';
END IF;
END;
/