0

我有AllowedFields包含以下列的数据库表:

ID int
Name Varchar(50)
FieldRecord Decimal(7,2)

我正在尝试使用以下查询插入演示记录:

set term ^ ;
EXECUTE BLOCK AS BEGIN
INSERT INTO AllowedFields(Name, FieldRecord) VALUES ("A", 0.00);
INSERT INTO AllowedFields(Name, FieldRecord) VALUES ("E", 13.00);
END^

但我收到此错误消息:

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
A
At line 3, column 37

显然firebird将此A值视为列值?

我将如何更改此脚本以插入记录。谢谢。

4

1 回答 1

1

SQL 标准定义了双引号来表示标识符(表名、列名、约束名,...)。所以"A"标识了一个名为A而不是单个字符的列。

在 SQL 中,字符串文字必须用单引号括起来。所以你需要使用'A'来表示一个字符串(字符)字面量。

把它放在一起你需要:

INSERT INTO AllowedFields(Name, FieldRecord) VALUES ('A', 0.00);
INSERT INTO AllowedFields(Name, FieldRecord) VALUES ('E', 13.00);

您还应该知道,标准要求引用的名称区分大小写,因此"A"与 ) 不同的列也是如此"a"

火鸟遵循标准。

于 2013-06-25T19:38:05.253 回答