[英]How do I write a PL/SQL code that checks if a value exists in table_name.column name before inserting into it?
insert into AIRPORT_DIM
select airportkey_Seq.nextval, AIRPORTID , CITY_NAME,NULL, NULL
from TMP_AIRPORT;
how do I turn the above insert SQL code into a pl/sql code that checks if the AIRPORTID of the newly inserted row already exists with different city_name in the airport_dim table?如何将上述插入 SQL 代码转换为 pl/sql 代码,以检查新插入行的 AIRPORTID 是否已在 airport_dim 表中以不同的 city_name 存在?
if exists them then do如果存在,那么做
insert into AIRPORT_DIM
select airportkey_Seq.nextval, AIRPORTID ,NULL,CITY_NAME, sysdate
from TMP_airport;
else别的
insert into airport_dim
select airportkey_Seq.nextval, AIRPORTID , CITY_NAME,NULL, NULL
from TMP_airport;
The following are the AIRPORT_DIM and TMP_airport tables.以下是 AIRPORT_DIM 和 TMP_airport 表。
CREATE TABLE AIRPORT_DIM
(
AIRPORT_KEY NUMBER,
AIRPORT_CODE VARCHAR2(8),
CITY_NAME_CURRENT VARCHAR2(20),
CITY_NAME_NEW VARCHAR2(20),
EFFECTIVE_DATE TIMESTAMP(8)
)
CREATE TABLE TMP_AIRPORT
(
AIRPORTID VARCHAR2(4),
CITY_NAME VARCHAR2(20)
)
you can achieve that as follow:您可以按以下方式实现:
INSERT INTO airport_dim
select airportkey_Seq.nextval
, AIRPORTID
, CASE WHEN ad.AIRPORT_KEY is null then CITY_NAME else null end
, CASE WHEN ad.AIRPORT_KEY is null then null else CITY_NAME end
, CASE WHEN ad.AIRPORT_KEY is null then null CITY_NAME sysdate end
from TMP_airport ta
LEFT JOIN AIRPORT_DIM ad
ON ta.AIRPORTID = ad.AIRPORT_CODE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.