PLS-00103:遇到以下其中一项时遇到符号“'”:()

时间:2014-01-21 22:17:51

标签: sql triggers

我的sql代码有问题。我尝试创建一个触发器,它将总结“关闭”游览后我获得的收益。关闭我的意思是更新一行并输入费用(付款),日期和时间。

这是表格:

create table Excursion(
excIDExcursion NUMBER(4) PRIMARY KEY ,
excStartDate date not null,
excStartTime varchar(5) not null, 
excEndDate date,
excEndTime varchar(5),
excpayment number(8),
cIDCustomer number(4) references Customer,
ID_TaxiCab number(4) references TaxiCab
);

这是一个有错误的触发器:

create or replace trigger HowMuchWeEarned
after update on Customer
for each row
declare sumofearning number;
begin
if(excendtime!='' and exceenddate!=null)
then
Select sum(excpayment) into sumofearning from Excursion;
dbms_output.put_line(‘We’ve earned’||sumofearning);
end;
/
show errors;

错误显示:

PLS-00103: Encountered the symbol "‘" when expecting one of the f ollowing: ( ) - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> table c ontinue avg count current exists max min prior sql stddev sum variance execute multiset the both leading trailing forall mer ge year month day hour minute second timezone_hour timezone_mi nute timezone_region timezone_abbr time timestamp interval dat e <a string literal with character set specificatio

这个if语句可能存在问题,但我无法找出问题所在。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我很确定你的问题是聪明的报价。尝试使用常规单引号替换。所以,替换这一行:

dbms_output.put_line(‘We’ve earned’||sumofearning);

这一行:

dbms_output.put_line('We’ve earned'||sumofearning);

答案 1 :(得分:0)

if中的

PLSQL语句应以end if结尾; DBMS_OUTPUT尝试下面后

END IF;
END;
/

这应该有效。