oracle 创建包体的一些问题

时间:2022-05-15 15:29:09

1、

PLS-00201:必须声明标识符'A1'

PLS-00304: 如果没有说明, 则无法编译'A1'主体

解决办法:

用sysdba身份 把A1包的执行权限给这个用户。

举例:

1.C:\Users\Anakin>sqlplus /nolog
2.SQL> connect /as sysdba;(进行数据库连接)
3.grant execute on A1 to xxx(指定的用户名);

2、

PLS-00204: 函数或伪列 'EXISTS' 只能在 SQL 语句中使用;结果:PL/SQL中不能用exists函数?

利用 Oracle 原有的 Exists 语法,如下
declare
  v_cnt number;
begin
  select count(*)
    into v_cnt
    from dual
   where exists (select * from t_vip where col=1);
  if v_cnt = 0 then
    dbms_output.put_line('无记录');
  end if;
end;
通过在语句的外面套上一层dual,来使用oracle原有的exists语法
性能好得多,与MSSQL的 if exists 最接近,推荐使用。