oracle PLS-00103 执行简单查询后出错

Posted

技术标签:

【中文标题】oracle PLS-00103 执行简单查询后出错【英文标题】:oracle PLS-00103 Error after executing a simple query 【发布时间】:2021-12-12 10:19:54 【问题描述】:

这是我在 Oracle SQL Developer 中运行的代码,接下来出现了错误: 这是一个非常简单的查询,那么它有什么问题呢?

DECLARE zero varchar(20);
DECLARE emptys;
begin
zero := '0';
emptys := null;
IF(emptys = zero)   then 
DBMS_OUTPUT.put_line('yes');
ELSE
dbms_output.Put_line('no'); 
end if;
end;
    

从第 1 行开始的错误命令 - 声明零 varchar(20); 声明为空; 开始 零:='0'; 清空 := null;

IF(emptys = zero)   then 
DBMS_OUTPUT.put_line('yes');
ELSE
dbms_output.Put_line('no'); 
end if;

结束;

错误报告 - ORA-06550:第 2 行,第 5 列: PLS-00103:在预期以下情况之一时遇到符号“DECLARE”:

开始函数杂注过程子类型类型 当前光标删除 先于存在 在“DECLARE”之前插入符号“begin”以继续。 ORA-06550:第 13 行,第 74 列: PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:

( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with

【问题讨论】:

【参考方案1】:

DECLARE 表示变量声明部分的开始。你只有一个这样的部分。您不会为您声明的每个变量重复该关键字。

您没有为变量emptys 提供数据类型。我假设你希望它是varchar2(20)

DECLARE 
  zero varchar(20);
  emptys varchar2(20);
begin
  zero := '0';
  emptys := null;
  IF(emptys = zero)   then 
    DBMS_OUTPUT.put_line('yes');
  ELSE
    dbms_output.Put_line('no'); 
  end if;
end;
    

【讨论】:

以上是关于oracle PLS-00103 执行简单查询后出错的主要内容,如果未能解决你的问题,请参考以下文章

PLS-00103:在 Oracle 11g 中遇到符号“DECLARE”

oracle - PLS-00103 & ORA -06550 关于程序

Pl SQL Oracle PLS-00103:遇到符号“CREATE”

ORACLE 存储过程报错 PLS-00103 求查错

PLS-00103:在简单更新块中遇到符号“文件结尾”

错误 PLS-00103:遇到符号“DECLARE”?