【问题标题】:"PLS-00103: Encountered the symbol "END" when expecting one of the following: := . ( % ; The symbol ";" was substituted for "END" to continue. "“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“
【发布时间】: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
  • 您似乎在检查员工更改出生日期时(这种情况有多普遍?)他们不到一岁...

标签: sql triggers oracle-sqldeveloper


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多