Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Firebird Sql Syntax Problem

  Alt 9. Aug 2007, 12:10
Und noch ein Versuch mit "Hand-Insert" usw. Auf ähnlichen Salat wollte ich noch gestern hier hinweisen

http://www.delphipraxis.net/internal...=760226#760226

Gleiches gilt hier auch :

benutze eingebaute Methoden und erfinde sie nicht selber neu. Bin mir allerdings nicht sicher, ob die Zeos überhaupt TDataset kompatibel sind. Falls ja, dann mache es gleich mit Parametern :

Delphi-Quellcode:
Dataset.Insert;
Dataset.FieldByName('ANREDE').AsString := Cmb_Kd_Speichern_Anrede.Text;
...
Dataset.Post;
Geht das mit Zeos, dann sind gleich mehrere Fehlerquellen weg. Zumindest aber ein falsch gesetztes + im String, ein vergessenes ' usw.

Da die "QuotedStr" den Source noch zusätzlich unübersichtlicher machen, würde ich mir das hier auch mal überlegen (ist wenigstens Dialect 3 eingestellt ?) :

Zitat von Firebird:
Double-quoted identifiers
Before the SQL-92 standard, it was not legal to have object names (identifiers) in a database that duplicated keywords in the language, were case-sensitive or contained spaces. SQL-92 introduced a single new standard to make any of them legal, provided that the identifiers were defined within pairs of double-quote symbols (ASCII 34) and were always referred to using double-quote delimiters.

The purpose of this “gift” was to make it easier to migrate metadata from non-standard RDBMSs to standards-compliant ones. The down-side is that, if you choose to define an identifier in double quotes, its case-sensitivity and the enforced double-quoting will remain mandatory.

Firebird does permit a slight relaxation under a very limited set of conditions. If the identifier which was defined in double-quotes:

was defined as all upper-case,

is not a keyword, and

does not contain any spaces,

...then it can be used in SQL unquoted and case-insensitively. (But as soon as you put double-quotes around it, you must match the case again!)

Warning
Don't get too smart with this! For instance, if you have tables "TESTTABLE" and "TestTable", both defined within double-quotes, and you issue the command:

SQL>select * from TestTable;
...you will get the records from "TESTTABLE", not "TestTable"!

Unless you have a compelling reason to define quoted identifiers, it is usually recommended that you avoid them. Firebird happily accepts a mix of quoted and unquoted identifiers – so there is no problem including that keyword which you inherited from a legacy database, if you need to.

Warning
Some database admin tools enforce double-quoting of all identifiers by default. Try to choose a tool which makes double-quoting optional.
Gruß
Hansa
  Mit Zitat antworten Zitat