“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“

Posted

技术标签:

【中文标题】“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“【英文标题】:"PLS-00103: Encountered the symbol "END" when expecting one of the following: := . ( % ; The symbol ";" was substituted for "END" to continue. " 【发布时间】:2013-09-20 04:13:10 【问题描述】:
create or replace trigger employee_age_constraint
before insert on employee
for each row
begin
  if floor(months_between(current_date,:New.employee_birthdate)/12) < 13 then 
    raise_application_error(123123, 'asf')
  end if; 
end;

我在 Oracle SQL 开发人员上使用此代码时不断收到此错误,我不知道为什么,请帮助!

【问题讨论】:

raise_application_error 后面缺少分号? 这个问题似乎离题了,因为它是关于缺少分号的。 这一点我怎么强调都不过分。 请勿在您的数据库中存储年龄(或下一个生日或其他任何含义)除非您定期更新整个表,否则您的约束是无用的。如果您定期更新整个内容,它只需要不运行一次(或运行两次),您就会遇到严重的麻烦。 See, for instance my answer here 您似乎在检查员工更改出生日期时(这种情况有多普遍?)他们不到一岁... 【参考方案1】:

你必须插入 ;后 : raise_application_error(123123, 'asf')

你必须以此结束你的行。 玩得开心。

【讨论】:

以上是关于“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“的主要内容,如果未能解决你的问题,请参考以下文章

最大化这个方程 E[a1]-E[a2]+E[a3]-E[a4] [关闭]

make 模板

理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY

理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY

理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY

理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY