AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Dynamische SQL in Stored Procedure mit Hochkomma-Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische SQL in Stored Procedure mit Hochkomma-Problem

Ein Thema von JoyAnn · begonnen am 5. Feb 2008 · letzter Beitrag vom 6. Feb 2008
Antwort Antwort
JoyAnn

Registriert seit: 7. Mär 2007
Ort: Augsburg
4 Beiträge
 
Delphi 7 Enterprise
 
#1

Dynamische SQL in Stored Procedure mit Hochkomma-Problem

  Alt 5. Feb 2008, 16:35
Datenbank: Oracle • Version: 10g • Zugriff über: SQLDirect
Ich will in einer Stored Procedure - mit Execute Immediate - eine temporäre Tabelle anlegen mit Strings in diversen Join-Bedingungen. Theoretisch verstehe ich wie es geht, aber praktisch funktioniert es leider nicht.

Mein SQL-Statement stelle ich in einer VARCHAR2 Variablen zusammen.
Vereinfacht sieht es folgendermaßen aus:

SQL-Code:
lSQL := 'CREATE GLOBAL TEMPORARY TABLE TempData AS ' ||
             'SELECT t1.col1, t2.col2 ' ||
             'FROM tabelle1 t1 JOIN tabelle2 t2 ON (t2.col3 = ''' || value || ''' AND t1.col4 = t2.col4);';
Ich muss den String verketten, da an der Stelle kein binden möglich ist, habe ich herausgefunden.
Das verblüffende für mich ist, dass im Resultat um den Wert value jeweils zwei einzelne Hochkomma stehen, also ''wertX'' statt 'wertX', obwohl ich gedacht habe, dass in PL/SQL die einfachen Hochkomma verdoppelt werden müssen, um am Schluss ein Hochkomma stehen zu haben.

Weiß jemand wo ich meinen Denkfehler habe?

Vielen Dank schon mal für die Hilfe,
JoyAnn
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Dynamische SQL in Stored Procedure mit Hochkomma-Problem

  Alt 5. Feb 2008, 18:44
Herzlich willkommen in der Delphi-PRAXiS, Carola.

Kann es nicht sein, dass die String Variable value bereits begrenzende Hochkommata enthält? Beim Zusammenbau eines SQL Statements mittels Literalen musst du jede Variable vorbehandeln, damit enthaltene Hochkommata verdoppelt werden.

Freundliche Grüße
  Mit Zitat antworten Zitat
JoyAnn

Registriert seit: 7. Mär 2007
Ort: Augsburg
4 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Dynamische SQL in Stored Procedure mit Hochkomma-Problem

  Alt 6. Feb 2008, 05:47
Hallo Marabu,

danke für den Tipp, ich war überrascht, aber genau das war das Problem. Erkennt das PL/SQL automatisch um was für einen Variablentyp es sich handelt? Also meine Variable enthielt keine Hochkomma, aber irgendwie wurden diese richtig gesetzt entsprechend des verketteten Variablentyps. Wenn ich in Delphi den gleichen String zusammenstellen will, muss ich mich selber um die Hochkommas kümmern, hier anscheinend nicht.

Also nochmal vielen Dank.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Dynamische SQL in Stored Procedure mit Hochkomma-Problem

  Alt 6. Feb 2008, 07:18
Hallo,

Verwendung von QuotedStr ist meist die Abhilfe.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:11 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