解决InterBase中定义存储过程和触发器时报错:unexpected end of command 问题

经过多方查阅资料,终于搞定这个恶心的问题。

在InterBase中用Sql语句生成触发器和存储过程时报错误:unexpected end of command 是由于Interbase分析器默认的语句分隔符是逗号,而这与我们要写的触发器或存储过程中结束语句体的符号刚好相同,造成判断语句结构体不完整。也就是说语句
CREATE TRIGGER SET_KEY_FIELD_VALUE FOR MY_TABLE

BEFORE INSERT AS
BEGIN

       NEW.MY_KEY_FIELD = GEN_ID (MY_GENERATOR, 1);


END
就会被理解为
CREATE TRIGGER SET_KEY_FIELD_VALUE FOR MY_TABLE

BEFORE INSERT AS
BEGIN

NEW.MY_KEY_FIELD = GEN_ID (MY_GENERATOR, 1)
这样,缺少了End结尾,所以报错。解决方法是修改默认分割符,在语句开头用SET Team语句指定分隔符,如||,然后在语句结尾加上这个分隔符,这样分析器就会自动识别整个语句,不会错误的结束了。

如:

SET Term ||;

 CREATE TRIGGER SET_KEY_FIELD_VALUE FOR MY_TABLE

BEFORE INSERT AS
BEGIN

       NEW.MY_KEY_FIELD = GEN_ID (MY_GENERATOR, 1);


END 
 ||

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值