我有以下的sql脚本。当select查询找不到记录时,insert语句没有插入任何记录。 如果select查询找不到任何记录,我想要使用新的序列号和其他具有空值的字段插入记录。 我怎么能这样做。
insert into testing.test_ref_details(SEQNUM, TEST_TYPE,TEST_REF_NO)
select '&NEXT_SEQ_NO', '1',max(test_ref_no) as prev_test_ref1
from testing.test_runs_status
where test_type = 1
and run_status = 1
and test_end_dt = (select last_day(add_months(trunc(sysdate),-6))+2 from dual)
group by test_end_dt
答案 0 :(得分:3)
insert into testing.test_ref_details(SEQNUM, TEST_TYPE,TEST_REF_NO)
WITH q AS (
select '&NEXT_SEQ_NO' a, '1' b,max(test_ref_no) as prev_test_ref1
from testing.test_runs_status
where test_type = 1
and run_status = 1
and test_end_dt = (select last_day(add_months(trunc(sysdate),-6))+2 from dual)
group by test_end_dt
)
SELECT a, b, prev_test_ref1 FROM q
UNION ALL
SELECT '&NEXT_SEQ_NO', NULL, NULL FROM DUAL
WHERE NOT EXISTS (SELECT NULL FROM q);
答案 1 :(得分:2)
PL / SQL解决方案:
begin
insert into testing.test_ref_details(SEQNUM, TEST_TYPE,TEST_REF_NO)
select '&NEXT_SEQ_NO', '1',max(test_ref_no) as prev_test_ref1
from testing.test_runs_status
where test_type = 1
and run_status = 1
and test_end_dt = (select last_day(add_months(trunc(sysdate),-6))+2 from dual)
group by test_end_dt;
if sql%rowcount = 0 then
insert into testing.test_ref_details(SEQNUM)
values ('&NEXT_SEQ_NO');
end if;
end;