Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在PL/SQL中声明select查询?_Oracle_Select_Plsql_Declare - Fatal编程技术网

Oracle 如何在PL/SQL中声明select查询?

Oracle 如何在PL/SQL中声明select查询?,oracle,select,plsql,declare,Oracle,Select,Plsql,Declare,我想声明一个select查询以在触发器中使用它,但我通常是sql中的noob:p有人能帮我吗 我的代码(示例): 您可以使用由批量收集和FORALL组成的过程: 另外,使用DB触发器与此类任务无关。您想在触发器内使用它做什么?有比将查询存储在变量中更好的方法。我的任务是创建一个函数/触发器(不管它是什么,只要它能工作,我正在尝试使用触发器),如果我尝试将主键相同的两个数据库合并在一起,它会向主键添加一个值。我试图通过constraint_表选择一个表中的所有PK来解决此任务,并通过一个随机值对它

我想声明一个select查询以在触发器中使用它,但我通常是sql中的noob:p有人能帮我吗

我的代码(示例):

您可以使用由批量收集和FORALL组成的过程:


另外,使用DB触发器与此类任务无关。

您想在触发器内使用它做什么?有比将查询存储在变量中更好的方法。我的任务是创建一个函数/触发器(不管它是什么,只要它能工作,我正在尝试使用触发器),如果我尝试将主键相同的两个数据库合并在一起,它会向主键添加一个值。我试图通过constraint_表选择一个表中的所有PK来解决此任务,并通过一个随机值对它们进行计数。对于您试图解决的实际问题,更好的解决方案是在合并的数据库中有一个新序列并覆盖原始主键。您可能需要在审核表中记录原始主键和新主键(取决于您的整个要求)。如果我尝试执行您的过程,则会出现以下错误:Fehlerbericht-ORA-06550:Zeile 7,Spalte 39:PL/SQL:ORA-00933:SQL Befehl wurde nicht korrekt beendet ORA-06550:Zeile 5,spalte11:PL/SQL:SQL语句被忽略06550。00000-“行%s,列%s:\n%s”*原因:通常是PL/SQL编译错误*措施:@AnSuS对不起,我忘了在
过程
之前添加
创建或替换
。现在,没关系。请再试一次。谢谢你的程序工作顺利!但是命令:exec pr_list_constraints(:p_owner);给我们的错误:丢失defines@AnSuS不客气。您是否通过
var p_owner varchar2(50)定义p_owner?@AnSuS刚刚定义了p_所有者问题
exec pr_list_约束(:p_所有者)或发布
exec pr_list_约束('DAB_NAME')直接。
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;
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