You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebird存储过程报错:Token Unknown - end 解决方法咨询

修复Firebird存储过程的Token Unknown错误

我来帮你搞定这个Firebird存储过程的问题——你遇到的Token unknown - line 13, column 1 end错误,核心原因是Firebird存储过程的语法规则和你写的代码不匹配,尤其是返回结果集的方式不对,再加上语句结尾的分号缺失。

问题分析

Firebird的存储过程不能直接用SELECT * FROM table1这种方式返回结果集,它需要特定的语法来返回数据;同时你代码里的每个SQL语句结尾都缺少分号,这也会导致解析器报错。

修正后的代码

假设你需要根据输入的IN_ID参数过滤table1的数据并返回结果集,修正后的代码如下:

CREATE OR ALTER PROCEDURE TRIAL (IN_ID DCOUNTER)
AS
BEGIN
  -- 遍历查询结果,逐行返回给调用者
  FOR SELECT * FROM table1 WHERE id = :IN_ID
  DO
    SUSPEND;
END;

关键语法说明

  • FOR SELECT ... DO:Firebird中用来遍历查询结果集的结构,替代直接的SELECT语句
  • SUSPEND:这是Firebird存储过程返回结果的核心语句,它会把当前遍历到的行返回给调用方,直到结果集遍历完成
  • 分号:每个SQL语句(包括FOR SELECT块、END语句)都必须以分号结尾,这是Firebird语法的强制要求
  • 参数引用:用:IN_ID来引用存储过程的输入参数,这是Firebird存储过程中使用参数的标准方式

如果你不需要过滤数据,只是返回table1的所有行,去掉WHERE子句即可:

CREATE OR ALTER PROCEDURE TRIAL (IN_ID DCOUNTER)
AS
BEGIN
  FOR SELECT * FROM table1
  DO
    SUSPEND;
END;

内容的提问来源于stack exchange,提问作者Marfix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:17:50