予約語タイムスタンプをフィールド名として使用する(Firebird 2.5)

StackOverflow https://stackoverflow.com/questions/1800841

  •  05-07-2019
  •  | 
  •  

質問

既存のアプリケーションのデータレイヤーを拡張して、MSSQLとSQLiteに加えてFirebird 2.5で動作するようにしましたが、障害にぶつかりました。

TimeStamp型のデータ/時刻を保存するTimeStampというフィールドがあります。これは、型がdatetimeであるMSSQLおよびSQLiteで正常に機能しますが、Firebirdでは機能しません。次のSQL:

SELECT SysTrnId,'TimeStamp' from "TRANSACTIONS"

一見機能しますが、TimeStampフィールドはfieldname" CONSTANT"として返されます。内容は「タイムスタンプ」というテキストです

Firebirdでこれを行うことは可能ですか、それともフィールドの名前を変更し、他のデータレイヤーのコードを変更する必要があります。

役に立ちましたか?

解決

firebirdエスケープ文字は、二重引用符" です。 firebirdでは、二重引用符でエスケープする必要があるフィールドがある場合、大文字と小文字が区別されることに注意してください。そのため、フィールドを TimeStamp として宣言した場合、 select" TIMESTAMP" ... はフィールドが見つかりませんというエラーで失敗します。

他のヒント

それが機能するかどうかはわかりませんが、" TimeStamp"を二重引用符で囲みましたか? 通常、一重引用符は定数文字列を示します。

よろしく
K

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top