![]() |
Datenbank: Oracle • Zugriff über: ADO
ADO und Subselect
Hallo zusammen,
kann das sein, dass ADO nicht mit Subselects klarkommt? Sobald ich neben normalen Spalten der Tabelle A einen subselect auf Tabelle B mache kommt der Oraclefehler 'Rechte Klammer fehlt'. Hierbei ist das Statement selber ziemlich egal, sobald irgendein Subselect drin ist kommt der Fehler. Konkret benutze ich einen TADOCommand und weise das Statement dem CommandText zu. Das Statement funktioniert im SQLExplorer und SQLPlus tadellos. |
Re: ADO und Subselect
Zeig mal dein Statement.
|
Re: ADO und Subselect
kann ich gerne machen, aber wie gesagt, sobeald auch nur irgendein subselect vorkommt gehts nimmer (in 'normalen' Datenbankzugriffsprogrammen schon).
SQL-Code:
es reich aber auch schon ein
select
trunc(avsgendt) Tag, count(*) Anzahl, sum((select sum(artquant) from cstordps where cstordps.cstordnm=cstordhd.cstordnm)) Packstuecke from cstordhd where srctype='Host' and trunc(avsgendt)>=trunc(SYSDATE-10) and trunc(avsgendt)<=trunc(SYSDATE) and custclnt='Loewe' group by trunc(avsgendt) union select trunc(avsgendt) Tag, count(*) Anzahl, sum((select sum(artquant) from cstordpsj where cstordpsj.cstordnm=cstordhdj.cstordnm)) Packstuecke from cstordhdj where srctype='Host' and trunc(avsgendt)>=trunc(SYSDATE-10) and trunc(avsgendt)<=trunc(SYSDATE) and custclnt='Loewe' group by trunc(avsgendt)
SQL-Code:
wobei hier natürlich gesichert sein muss, dass der subselect nur eine row liefert, aber das wäre ja dann ein anderer oracle-fehler.
select
einfeld, (select nocheinfeld from andereTabelle where tabelle.joinfeld=andertabelle.joinfeld) test from tabelle p.s. ums nochmal deutlich zu machen: statement funktioniert im SQL-Explorer UND in SQLPlus. |
Re: ADO und Subselect
Lustic, aber umgehe das Problem doch einfach, indem Du die Query in eine VIEW schmeisst.
|
Re: ADO und Subselect
Nachdem das eine Art DB-Explorer ist und dieses Statement vom Nutzer eingegeben wird, fällt diese Option allerdings aus. Das Programm wird benutzt, um beim Kunden auf die Datenbank bequem zugreifen zu können, ohne die BDE installieren zu müssen.
|
Re: ADO und Subselect
Welche Datenbanken sollen unterstützt werden?
|
Re: ADO und Subselect
Es gibt für Oracle doch bestimmt soetwas wie einen SQL-Monitor. Schau doch mal, was ADO an Oracle schickt?
|
Re: ADO und Subselect
@Sidorion, änder doch mal deinen Titel, was du da hast, ist kein Subselect, sondern 'n UNION.
wenn du den titel richtig wählst, findet sich wohl auch eher einer, welcher dir weiterhelfen kann, ausserdem, wenn ein anderer ein ähnliches problem hat, findet er dann auch eine lösung mit der suche ... so nicht. grüss und noch 'n schönen abend. PS: auch dein zweites beispiel, ist kein subselect... sondern eine nicht standard erweiterung deines db servers. |
Re: ADO und Subselect
Warum soll das kein Subselect sein?
|
Re: ADO und Subselect
Zitat:
|
Re: ADO und Subselect
@grenzgaenger: wenn das Problem die union gewesen wäre, hätte ich auch geschrieben, dass ich ein Problem mit unions habe. Der Titel des Threads trifft genau den Kern des Problems. Zum Subselect, der 'keiner ist': wie sieht Deiner Meinung nach ein 'richtiger' Subselect aus?
|
Re: ADO und Subselect
Sidorion, lass doch. Hast Du schon mal geschaut, was ADO an Oracle schickt?
gibt es in Oracle sowas wie 'EXEC (<SQL-Commando>)'? Dann kannst Du nämlich die ADO-Macke umgehen. Du schickst also kein 'SELECT * FROM BLA' an Oracle, sondern ein
SQL-Code:
Das wird ADO bestimmt nicht parsen...
EXEC ('SELECT * FROM BLA')
|
Re: ADO und Subselect
Ich vermute mal grenzgaenger verwechselt hier Subselect und Derived Table
|
Re: ADO und Subselect
wenn du mir noch sagst, wie ich das schauen kann, alzimar, könnte ich das gerne tun. In Oracle gibts nen execute, aber der ist für den Precompiler von Oracle, da lass ich die Finger von :?
|
Re: ADO und Subselect
ein subselect sieht in etwa folgendermassen aus...
SQL-Code:
alternativ noch ein anderes beispiel, hier mit der in clause
select * from bla where exists (select * from blabla where ...)
SQL-Code:
Select Film_Title
From Thespian_Film_Table Where Thespian_Last_Name = "Ford" and Thespian_First_Name = "Harrison" and Film_Title in (Select Film_Title From Film_Table Where Film_Year equals "1984"); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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 by Thomas Breitkreuz