Plsql包错误
下面的代码出现了许多错误。只是想检查一下我的代码语法是否正确。包背后的主要逻辑是获取所有案例以供特定审查,并使用shell脚本将其假脱机到一个文件中。到目前为止,我的注意力集中在包装上Plsql包错误,plsql,Plsql,下面的代码出现了许多错误。只是想检查一下我的代码语法是否正确。包背后的主要逻辑是获取所有案例以供特定审查,并使用shell脚本将其假脱机到一个文件中。到目前为止,我的注意力集中在包装上 create or replace PACKAGE BODY PK_FCP_EXTRACT is PROCEDURE sp_fcp_extract is cursor Rev_cur is select * from t_uar_reviews where CREATED_DATE=trunc(s
create or replace PACKAGE BODY PK_FCP_EXTRACT is
PROCEDURE sp_fcp_extract is
cursor Rev_cur is select * from t_uar_reviews where CREATED_DATE=trunc(sysdate) ;
r Rev_cur%rowtype;
cursor case_cur( c_revid IN t_uar_reviews.review_id%type )
is select *
from t_uar_cases where review_id= c_revid ;
c case_cur%rowtype;
begin
open Rev_cur;
loop
fetch Rev_cur into r;
exit when Rev_cur%notfound;
open case_cur( r.review_id );
loop
fetch case_cur into c;
exit when case_cur%notfound;
dbms_output.put_line(c.UAR_CASE_ID||','||c.UAR_REVIEW_ID||','||c.CASE_TYPE||','||c.CASE_NMBR||','||c.ACTIVE_FLAG||','|| c.CREATED_DATE);
end loop;
close case_cur;
end loop;
close Rev_cur;
end;
END PK_FCP_EXTRACT;
你的语法是正确的 以下测试代码在空架构中正常工作:
create table t_uar_reviews(
review_id number,
created_date date
)
/
create table t_uar_cases(
review_id number,
UAR_CASE_ID number,
UAR_REVIEW_ID number,
CASE_TYPE varchar2(10),
CASE_NMBR number,
active_flag varchar2(1),
created_date date)
/
create package PK_FCP_EXTRACT is
PROCEDURE sp_fcp_extract;
end;
/
create or replace PACKAGE BODY PK_FCP_EXTRACT is
PROCEDURE sp_fcp_extract is
cursor Rev_cur is select * from t_uar_reviews where CREATED_DATE=trunc(sysdate) ;
r Rev_cur%rowtype;
cursor case_cur( c_revid IN t_uar_reviews.review_id%type )
is select *
from t_uar_cases where review_id= c_revid ;
c case_cur%rowtype;
begin
open Rev_cur;
loop
fetch Rev_cur into r;
exit when Rev_cur%notfound;
open case_cur( r.review_id );
loop
fetch case_cur into c;
exit when case_cur%notfound;
dbms_output.put_line(c.UAR_CASE_ID||','||c.UAR_REVIEW_ID||','||c.CASE_TYPE||','||c.CASE_NMBR||','||c.ACTIVE_FLAG||','|| c.CREATED_DATE);
end loop;
close case_cur;
end loop;
close Rev_cur;
end;
END PK_FCP_EXTRACT;
可能的故障原因:
确保已先创建包,然后再创建包规范
确保在拥有t_uar_审查和t_uar_案例的架构中创建包,或者在表上具有直接选择授权(而不是通过角色)的架构中创建包。
确保包中引用的所有列都存在于表中。
如果这些都完成了,它应该会起作用
为了简化操作,请尝试对光标循环使用以下替代语法:
for r in Rev_cur loop
for c in Case_cur(r.review_id) loop
...do something..
end loop;
end loop;
通过使用此方法,您不需要定义记录r或c;它们是隐式创建的,您不需要打开/获取/检查/关闭游标。有哪些详细错误?问题并添加消息。错误6,7:PL/SQL:Item忽略错误6,49:PLS-00302:组件“REVIEW_ID”必须声明为错误9,8:PLS-00320:此表达式类型的声明不完整或格式错误9,8:PL/SQL:Item忽略错误15,8:PL/SQL:SQL语句忽略请将错误添加到问题中,以便其他人可以看到很容易,我犯了个错误。我给的列名不正确。谢谢你的回复。我很感激。我还建议将两个游标组合成一个带有连接的结果集。当前代码有效地加入了PL/SQL,这将很慢。