Как мне объявить мой запрос на выборку в PL / SQL? - PullRequest
0 голосов
/ 27 июня 2018

Я хочу объявить запрос на выборку, чтобы использовать его в триггере, но я вообще нуб в sql: P Кто-нибудь может мне помочь?

Мой код (пример):

DECLARE Primary_Keys VARCHAR(20);
BEGIN
SELECT cons.constraint_type 
FROM all_constraints cons, all_cons_columns cols 
WHERE cols.owner = 'DAB_NAME' 
AND cons.constraint_type = 'P' 
AND cons.constraint_name = cols.constraint_name 
AND cons.owner = cols.owner;
END;

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете использовать ПРОЦЕДУРУ , состоящий из ОБЫЧНЫЙ СОБИРАТЬ с FORALL :

SQL> set serveroutput on;
SQL> CREATE OR REPLACE PROCEDURE pr_list_constraints(
                              i_owner IN all_cons_columns.owner%TYPE
                              ) 
IS
BEGIN
      DBMS_OUTPUT.PUT_LINE('Constraint Types for '||i_owner);
      DBMS_OUTPUT.PUT_LINE('------------------------------- ');
   FOR constraint_rec
      IN (SELECT distinct cons.constraint_type 
            FROM all_constraints cons, all_cons_columns cols 
           WHERE cols.owner = i_owner --'DAB_NAME' 
           --AND cons.constraint_type = 'P'
             AND cons.constraint_name = cols.constraint_name 
             AND cons.owner = cols.owner)
   LOOP
      DBMS_OUTPUT.PUT_LINE(constraint_rec.constraint_type);
   END LOOP;
END;
/
SQL> var p_owner varchar2(50);
SQL> exec pr_list_constraints(:p_owner);

 Constraint Types for DAB_NAME 
 -------------------------------
 R
 U
 P
 C

P.S. Использование триггера БД не имеет значения для задач такого типа.

...