【发布时间】:2016-10-11 20:53:53
【问题描述】:
我试图通过提供 2 个变量作为输入来创建一个函数。这两个变量在函数中动态使用。我在循环开始时使用 select 语句来查找特定表中的主键列。此列分配给变量 value1。我正在使用这个 value1 变量作为序列变量。
create FUNCTION Test(schemaname in varchar2, tablename in varchar2)
return number
IS cnpParmId NUMBER;
good VARCHAR(1) := 'F';
exist VARCHAR(1) := 'F';
value1 varchar2(500);
begin
good := 'F';
exist := 'F';
loop
SELECT cols.column_name into value1
FROM all_constraints cons, all_cons_columns cols
WHERE cols.TABLE_NAME= 'tablename'
And cols.OWNER='schemaname'
And cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
select schemaname.value1_seq.nextval into cnpParmId from dual;
begin
select 'T' into good from dual
where cnpParmId not in
(select value1 from schemaname.tablename);
exception when NO_DATA_FOUND then good := 'F';
end;
exit when good = 'T';
end loop;
return cnpParmId;
end;
/
Test(XYZ,ABC);
但出现以下错误:
错误(21,11):PLS-00487:对变量“SCHEMANAME”的引用无效
错误(21,22):PL/SQL:ORA-02289:序列不存在
错误(23,7):PL/SQL:SQL 语句被忽略
错误(25,38):PL/SQL:ORA-00942:表或视图不存在
【问题讨论】:
标签: oracle stored-procedures plsql plsqldeveloper dynamicquery