错误-104正在创建Firebird存储过程 [英] Error -104 creating Firebird stored procedure

查看:18
本文介绍了错误-104正在创建Firebird存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法运行以下SP

CREATE PROCEDURE SP_NYANSAT(
        FORNAVN VARCHAR(30),
        EFTERNAVN VARCHAR(30),
        ADRESSE VARCHAR(50),
        POSTNUMMER CHAR(4),
        TELEFONNUMMER CHAR(8),
        EMAIL VARCHAR(50))
    AS
    DECLARE VARIABLE ID INTEGER;
    BEGIN
      ID = GEN_ID(GEN_ANSAT_ID,1);
      INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL);
    END

我得到的错误如下:

can't format message 13:896 -- message file C:Windowsfirebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
CREATE.

推荐答案

您在此代码前后使用过Set Term吗?

Firebird中的所有命令必须以分号结束。如果要创建存储过程,则需要能够区分存储过程内的终止分号和分号。

类似以下内容:

SET TERM ^ ;

CREATE PROCEDURE SP_NYANSAT(
        FORNAVN VARCHAR(30),
        EFTERNAVN VARCHAR(30),
        ADRESSE VARCHAR(50),
        POSTNUMMER CHAR(4),
        TELEFONNUMMER CHAR(8),
        EMAIL VARCHAR(50))
    AS
    DECLARE VARIABLE ID INTEGER;
    BEGIN
      ID = GEN_ID(GEN_ANSAT_ID,1);
      INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL);
    END
    ^

SET TERM ; ^ 

请注意存储过程的声明是如何以^结尾的,从而结束了该语句。在声明之后,您还可以恢复终止分号。

顺便说一句,我建议您将FireBird.msg复制到错误提示的位置,这样您就可以看到实际发生的情况。

编辑:

如果您愿意,可以检查link。在那里您可以找到许多关于Firebird+IBExpress的信息,包括SET Term(第81页)。

编辑2:

我在家里尝试了IBExperts+Firebird,创建存储过程没有任何问题。我的猜测是,您正在尝试执行以下操作之一:

  • 您已经打开了一个SQL编辑器,并且正在尝试直接编译代码。这是行不通的,因为IBExperts认为您正在尝试运行DSQL语句。存储过程是使用PSQL语句创建的。

  • 您正在尝试使用"New Procedure"实用程序(选中主菜单右上角的按钮),并将整个代码粘贴到编辑器中。这不会起作用,因为在该编辑器中,您只需将正文代码放入。存储过程名称设置在您打开的窗口右上角的字段中。通过使用代码编辑器上方左侧的"插入参数/变量"按钮,可以引入参数和变量。设置的术语句子由IBExperts自动创建。您可以在DDL选项卡中检查结果代码。

HTH

这篇关于错误-104正在创建Firebird存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆