Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi * in Stored Procedure [Interbase] (https://www.delphipraxis.net/29220-%2A-stored-procedure-%5Binterbase%5D.html)

Lemmy 6. Sep 2004 11:52

Re: * in Stored Procedure [Interbase]
 
Hi Hansa,

evtl. kann das mit dem * nicht funktionieren, weil Du alle Spalten einer Tabelle den Parametern der SP zuordnen musst:

SQL-Code:
CREATE PROCEDURE GetAdresseName (AdresseID INTEGER)
RETURNS (AdresseName VARCHAR(80))
AS
BEGIN
  FOR
    SELECT Name From Adresse Where ID=:AdresseID INTO AdresseName
  Do
   SUSPEND;
END^
Mit Into wird die SP quasi angewiesen die Werte in diesen Parameter (oder eben mehrere) zu übergeeben. Schau Dir doch mal das SP-Tutorial auf meiner Seite an

http://www.delphi-tutorials.de/Tutor...f_tutorial.zip

Grüße
Lemmy

Robert_G 6. Sep 2004 21:37

Re: * in Stored Procedure [Interbase]
 
Da ich hier schon des öfteren Prozeduren gesehen habe (MSSQL & IB/FB), die sich wie Views verhalten, wollte ich mich mal schlau machen, warum Oracle das nicht unterstützt.

Die Antwort ist simpel: Das Ganze funktioniert (zumindest beim SQL Svr) über zwei Threads.
Der erste arbeitet die Prozedur ab und schickt die Werte (mit suspend) durch eine Pipe an den zweiten.
Das kann in einer großen DB niemals funktionieren da es einfach zu viel Leistung schluckt (sicher nicht mehr als 20-30 User, bei mehr wird es zu Verzögerungen kommen, die der User bemerken würde).

Ein wesentlich effektiverer Weg wäre es einen Verweis auf einen Cursor zu übergeben.
Falls die FB/IB-Komponenten (sie arbeiten doch direkt mit der API von FB/IB ?) das ähnlich wie es manche Ora-Kompos unterstützen, könntest du mit dem Rückgabewert sofort ein DataSet oder eine Query "bestücken".

Hansa 6. Sep 2004 23:41

Re: * in Stored Procedure [Interbase]
 
Zitat:

Zitat von Robert_G
...Ein wesentlich effektiver Weg wäre es einen Verweis auf einen Cursor zu übergeben...

nene, viel zu umständlich. 8)

Robert_G 6. Sep 2004 23:47

Re: * in Stored Procedure [Interbase]
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von Robert_G
...Ein wesentlich effektiver Weg wäre es einen Verweis auf einen Cursor zu übergeben...

nene, viel zu umständlich. 8)

nope... :mrgreen:

SQL-Code:
create or replace function GetCursor(pSomeValue in varchar2) return SomeRefCurType
is
  oCur SomeRefCurType;
begin
  open oCur for
    SELECT X
    FROM  Y
    WHERE Z like pSomeValue;
 
  return oCur;
end;
Wird in FB sicher auch funktionieren. (wenn auch mit etwas anderer Syntax ;) )

Hansa 7. Sep 2004 00:20

Re: * in Stored Procedure [Interbase]
 
Robert, erspare mir den Oracle-Mist. :lol: Mir ist schon klar, daß ich einen Nagel auch mit der bloßen (dann blutenden) Hand einkloppen kann. :mrgreen:

Robert_G 7. Sep 2004 00:32

Re: * in Stored Procedure [Interbase]
 
Zitat:

Zitat von Hansa
Robert, erspare mir den Oracle-Mist. :lol: Mir ist schon klar, daß ich einen Nagel auch mit der bloßen (dann blutenden) Hand einkloppen kann. :mrgreen:

Hey, würde ich mich mit FB auskennen, hättest du da PSQL Code gesehen.
So musst du halt selbst schauen, ob die Lösung in FB möglich bzw. ob sie überhaupt besser ist (das was ich weiter oben geschrieben habe, weiß ich halt nur vom SQL Svr).
Da ich mit soviel Freundlichkeit auf einmal nicht umgehen kann:
@Gérome: Wie wär's mit einer Ignore-Liste pro Autor?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.
Seite 2 von 2     12   

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