经过多方查阅资料,终于搞定这个恶心的问题。
在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
||
本文解决了在InterBase数据库中使用SQL语句创建触发器和存储过程时遇到的unexpected end of command错误。原因是InterBase默认使用逗号作为语句分隔符,与触发器或存储过程中的结束符号冲突。解决方案是在SQL语句开始处设置新的分隔符并在语句末尾添加该分隔符。
1万+

被折叠的 条评论
为什么被折叠?



