Use MERGE Statement.
E.g
CREATE TABLE CITY (CITY_ID NUMBER, CITY_NAME VARCHAR2(50 BYTE) ) ;
E.g
CREATE OR REPLACE
PROCEDURE ADD_OR_UPDATE_CITY
(
IN_CITY_ID IN NUMBER,
IN_CITY_NAME IN VARCHAR2
)
AS
BEGIN
BEGIN
MERGE INTO City ct
USING ( SELECT IN_CITY_ID AS CITY_ID,
IN_CITY_NAME AS CITY_NAME
FROM DUAL
)SRC
ON
(
ct.CITY_ID = SRC.CITY_ID
)
WHEN MATCHED THEN
UPDATE SET
ct.CITY_NAME = SRC.CITY_NAME
WHEN NOT MATCHED THEN
INSERT
(
ct.CITY_ID , ct.CITY_NAME
)
VALUES
(
SRC.CITY_ID ,SRC.CITY_NAME
);
END;
--Exeption handling
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
RAISE;
END ADD_OR_UPDATE_CITY;