Stored procedures 错误-104创建Firebird存储过程
我无法运行以下SPStored procedures 错误-104创建Firebird存储过程,stored-procedures,firebird,Stored Procedures,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 INTEG
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:\Windows\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
CREATE.
在此代码前后是否使用了Set术语 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复制到错误显示的位置,以便查看实际发生的情况
编辑:
如果你愿意,你可以检查一下。在那里你可以找到很多关于Firebird+IBMExpress的信息,包括设置术语(第81页)
编辑2:
我刚刚在家试用了IBExperts+Firebird,创建存储过程没有问题。我猜你正在尝试做以下事情之一:
- 您已经打开了一个SQL编辑器,正在尝试直接编译代码。这是行不通的,因为IBExperts认为您正在尝试运行DSQL语句。存储过程是用PSQL语句创建的
- 您正在尝试使用“newprocedure”实用程序(检查主菜单右上方的按钮),并将整个代码粘贴到编辑器中。这将不起作用,因为在该编辑器中,您只需输入主体代码。存储过程名称在您打开的窗口右上方的字段中设置。使用代码编辑器上方左侧的“插入参数/变量”按钮引入参数和变量。IBExperts会自动创建设置的术语句子。您可以在DDL选项卡中检查生成的代码
HTH您在该代码前后是否使用了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复制到错误显示的位置,以便查看实际发生的情况
编辑:
如果你愿意,你可以检查一下。在那里你可以找到很多关于Firebird+IBMExpress的信息,包括设置术语(第81页)
编辑2:
我刚刚在家试用了IBExperts+Firebird,创建存储过程没有问题。我猜你正在尝试做以下事情之一:
- 您已经打开了一个SQL编辑器,正在尝试直接编译代码。这是行不通的,因为IBExperts认为您正在尝试运行DSQL语句。存储过程是用PSQL语句创建的
- 您正在尝试使用“newprocedure”实用程序(检查主菜单右上方的按钮),并将整个代码粘贴到编辑器中。这将不起作用,因为在该编辑器中,您只需输入主体代码。存储过程名称在您打开的窗口右上方的字段中设置。使用代码编辑器上方左侧的“插入参数/变量”按钮引入参数和变量。IBExperts会自动创建设置的术语句子。您可以在DDL选项卡中检查生成的代码
HTH这样我得到了以下错误:无效令牌。动态SQL错误。SQL错误代码=-104。令牌未知-第3行第1列。设置。您使用哪个工具创建SP?是isql还是另一个?据我所知,SET TERM是特定于Firebird的,因此无论您使用什么组件或工具来创建SP,都需要能够识别它。我完全按照原样复制了代码。。我正在使用IBExpert创建过程。。也许是IBExpert不明白?我家里有IBExpert+Firebird。我到那里后会检查的。同时,如果您希望查看我现在将添加到答案中的URL。@Herter,刚刚添加了一些关于使用IBExperts+Firebird的信息。希望这能有所帮助。这样我就得到了以下错误:无效令牌。动态SQL错误。SQL错误代码=-104。令牌未知-第3行第1列。设置。您使用哪个工具创建SP?是isql还是另一个?据我所知,SET TERM是特定于Firebird的,因此无论您使用什么组件或工具来创建SP,都需要能够识别它。我完全按照原样复制了代码。。我正在使用IBExpert创建过程。。也许是IBExpert不明白?我家里有IBExpert+Firebird。我到那里后会检查的。同时,如果您希望查看我现在将添加到答案中的URL。@Herter,刚刚添加了一些关于使用IBExperts+Firebird的信息。希望有帮助。