2013-06-25 66 views
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 

很明顯火鳥看到這個A值作爲列值?

如何更改此腳本以插入記錄。謝謝。

+0

嘗試對字符串文字使用單引號:'A'和'E'。 – mbeckish

+0

@mbeckish :)謝謝,請張貼您的評論作爲答案,所以我可以接受它。 – panjo

+0

您可以繼續並將功勞歸於@a_horse_with_no_name。 :) – mbeckish

回答

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")。

而Firebird遵循標準。

+0

有一個例外:如果您使用舊式方言1而不是方言3,則可以使用雙引號來分隔字符串。然而方言1應該被視爲棄用,因爲Interbase 6/Firebird 1(2000ish) –

+0

@MarkRotteveel:感謝您的提醒。到目前爲止,我只使用過Firebird 2.x ... –