AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Incompatilbe column/host variable data type
Thema durchsuchen
Ansicht
Themen-Optionen

Incompatilbe column/host variable data type

Ein Thema von ZOD · begonnen am 9. Nov 2017 · letzter Beitrag vom 9. Nov 2017
Antwort Antwort
Seite 3 von 3     123   
alex517
Online

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#21

AW: Incompatilbe column/host variable data type

  Alt 9. Nov 2017, 16:13
inzwischen kam der rote Kasten. Aber trotzdem zur Erläuterung..

Das Problem mit den Parameter habe ich auch schon gehabt.
Firebird versucht der Parameter :tmp_tabellen_name zu interpretieren.
Es kommt zu dem Schluss ein '*' die Länge von 1 Zeichen hat.
Für der Parameter :tmp_tabellen_name wird also der entsprechende Platz bereitgestellt.

Wenn jetzt mit f_lrtrim8(f_upper(:tmp_tabellen_name)) ein String mit der Länge > 1
an den Parameter übergeben wird, gibt es ein "string right truncation".

Man muss also Firebird mit cast() oder einer anderen Formulierung der Bedingung
überreden entsprechen Platz zu Verfügung zu stellen.


ich nehme mal ein einfacheres Beispiel.
Es sollen nur die passenden oder alle Personen zurückgegeben werden.
Für alle übergibt man * oder *** oder NULL je nach Variante
SQL-Code:
select
  P.*

from
  PERSON P

where
-- :NACHNAME = '' OR (P.NACHNAME = :NACHNAME) -- geht nicht
  :NACHNAME = '*OR (P.NACHNAME = :NACHNAME) -- geht mit max 1 Zeichen
-- :NACHNAME = '***' OR (P.NACHNAME = :NACHNAME) -- geht bis max 3 Zeichen

-- (:NACHNAME = cast('*' as VARCHAR(10))) OR (P.NACHNAME = :NACHNAME) -- geht bis 10 Zeichen

-- (cast(:NACHNAME as type of COLUMN PERSON.NACHNAME) = '*') OR (P.NACHNAME = :NACHNAME) -- geht bis Länge PERSON.NACHNAME

-- (:NACHNAME = cast('*' as type of COLUMN PERSON.NACHNAME)) OR (P.NACHNAME = :NACHNAME) -- geht bis Länge PERSON.NACHNAME

-- (:NACHNAME is null) or (P.NACHNAME = :NACHNAME) -- geht auch ohne cast()
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#22

AW: Incompatilbe column/host variable data type

  Alt 9. Nov 2017, 16:21
Ich hätte da noch einen Vorschlag aus der hinteren Ecke
SQL-Code:
select
     lt.id,
     lt.date_time,
     lt.operation,
     lt.user_name
from ibe$log_tables lt
where lt.Tabellenname like '%'||:tablename||'%'
Zitat:
Werden diese mit NULL übergeben, so wird in eine Variable ein '*' eingetragen
Wenn Du statt '*' ein '' übergibst, sollte das funktionieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#23

AW: Incompatilbe column/host variable data type

  Alt 9. Nov 2017, 16:38
@hoika
ich habe die 8191 aus Anzeige im Eingabedialog für Parameter von IBExpert.
War es nicht so, dass für ein varchar immer noch ein Zeichen hinzu kommt - also 8190 Zeichen für die Funktion aber der varchar hat 8191 Länge .. da muss ich selbst nochmals suchen.

@p80286
probiere ich später nochmals

@alex517
das muss es sein!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz