![]() |
Datenbank: Interbase • Version: 6.2 • Zugriff über: UIB
Data type unknown
Ich benötige folgende Query:
Code:
bekomme dabei aber die Fehlermeldung "Data type unknown"
select :MyParam, myTable.*
from myTable... Logisch, er kennt also den Datentyp nicht. Hab jetzt versucht mit cast(:MyParam as varchar(255)) einen Datentyp vorzugeben (so funktionierts unter FB), aber die Fehlermeldung bleibt die gleiche. Wie kann ich den Datentyp des Parameters im Select bekanntmachen? Vielen Dank im Voraus René |
Re: Data type unknown
Hallo René,
du kannst Parameter an Stelle von Feldwerten verwenden, aber nicht anstelle von Feld- oder Tabellennamen. Freundliche Grüße |
Re: Data type unknown
Gleiches Problem tritt bei Verwendung einer UDF auf, also beispielsweise die UDF lower aus der IB_UDF.
Hier kann ich auch im Where-Abschnitt den Parameter nicht verwenden. Außerdem, wie gesagt, unter Firebird funktioniert auch ein Parameter im Select |
Re: Data type unknown
Um dem Ganzen noch eins drauf zu setzen:
Was mit lower nicht funktioniert (lower(:myParam)) funktioniert mit upper bestens (upper(:myParam)) :shock: Why? |
Re: Data type unknown
Push :wall:
Es ist mir wirklich wichtig, vielleicht noch ein paar gute Tipps zu hören (außer steig auf Firebird um, oder das geht halt nicht) Insbesondere bin ich bei der Verwendung von UDFs gehandycapt, wenn ich da keine Parameter verwenden kann. |
Re: Data type unknown
Hallo!
Vielleicht schreibst du einfach mal, was genau du damit erreichen möchtest. Ich persönlich bin bis jetzt ganz gut ohne Parameter für Feldnamen ausgekommen... Cu, Udontknow |
Re: Data type unknown
Wie schon gesagt, es geht mir weniger um die Parameter für die Feldnamen, sondern um Parameter für UDFs.
Ich habe mir eine UDF zur Anpassung von Strings geschrieben (wandelt Umlaute und bestimmte Buchstabenkombinationen um). Folgendes funktioniert auch:
SQL-Code:
Hier werden mir alle ausgegeben, welche Müller oder Mueller heißen.
select Name
from Adressen where reducechar(Name) = 'mueller' Diese Abfrage möchte ich aber für eine Reihe von Adressen, welche mir in einer CSV-Datei vorliegen, ausführen. Klassischer Fall für Prepare und Parameter. Ich müsste die Abfrage also dahingehend ändern:
SQL-Code:
Dabei kommt es unter Interbase zur besagten Meldung: Data type unknown, Firebird machts.
select Name
from Adressen where reducechar(Name) = reducechar(:ListName) Noch lieber wäre mir folgende Query:
SQL-Code:
Aber da krachts ja schon im select
select :ListName, Name
from Adressen where reducechar(Name) = reducechar(:ListName) |
Re: Data type unknown
Wie hast du reducechar deklariert?
|
Re: Data type unknown
SQL-Code:
Wie zu sehen ist, habe ich der Einfachheit halber bei meinen SQL-Beispielen die beiden Integer-Übergabeparameter weggelassen.
/* ReduceChar */
DECLARE EXTERNAL FUNCTION ReduceChar CSTRING(255), INTEGER, INTEGER RETURNS CSTRING(255) FREE_IT ENTRY_POINT 'ReduceChar' MODULE_NAME 'myUDFs.dll'; |
Re: Data type unknown
zu 1.:
Hast Du da evtl. ein Problem mit den Hochkommata? Weise Deinem Parameter doch mal nicht einfach nur den Namen, sondern QuotedStr(SuchName) zu. zu 2.: Zitat:
SQL-Code:
select :ListName as Suchname, Name
from Adressen where reducechar(Name) = reducechar(:ListName) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz