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