Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция Oracle за актуализиране на таблица, ако записът е нулев, тогава INSERT

Всичко, от което се нуждаете, е ОБЕДИВАНЕ изявление. И двете ви изисквания могат да бъдат изпълнени наведнъж.

Синтаксисът е -

MERGE INTO table_a a
  USING table_b b
    ON (a.column= b.column)
  WHEN MATCHED THEN
    UPDATE SET a.column= b.column
  WHEN NOT MATCHED THEN
    INSERT (column1, column2)
    VALUES (b.val1, b.val2);

Актуализация Пример за показване на клауза USING за параметри на процедура

USING(
SELECT
p_HEAD_MARK hm, 
p_PROJECT_NAME pn, 
p_COLI_NUM cn, 
p_ONSITE_UPD_QTY ouq
FROM DUAL) s

Използвайте ги като s.hm, s.pn, s.cn, s.ouq

Актуализация 2 Пълен тестов случай

Да кажем, че имам таблица emp1 без редове. Създавам процедура, която приема ename като INPUT, който ще използвам за вмъкване в emp таблица чрез ОБЕДИВАНЕ .

SQL> SELECT * FROM emp1;

no rows selected

SQL>
SQL> CREATE OR REPLACE
  2  PROCEDURE p(
  3      p_ename IN VARCHAR2)
  4  AS
  5  BEGIN
  6    MERGE INTO emp1 e USING
  7    (SELECT p_ename AS ename FROM dual
  8    ) s ON(e.ename = s.ename)
  9  WHEN MATCHED THEN
 10    UPDATE SET e.empno = 100 WHEN NOT MATCHED THEN
 11    INSERT
 12      (ename
 13      ) VALUES
 14      (s.ename
 15      );
 16  END;
 17  /

Procedure created.

SQL>
SQL> sho err
No errors.
SQL>
SQL> BEGIN
  2    p('SCOTT');
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL>

Да видим дали стойността е вмъкната.

SQL> SELECT ename FROM emp1;

ENAME
----------
SCOTT

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Можете ли да ми помогнете да напиша процедура в Oracle за изпращане на данни от таблица в CSV файл?

  2. Промени в интерфейса на Oracle

  3. Oracle Data Mining (ODM) – Инсталиране и настройка

  4. изберете 2-ри ред в Plsql

  5. Как да създадете увеличаващи се колони?