Rückgabewert über SQL_Query
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Rückgabewert über SQL_Query
So, mal ne hoffentlich leichte Frage.
Wie bringe ich den einer TSQL_Query bei, einen Rückgabewert einer StoredProc auch wieder auszuspucken?
Über Params gehts nicht, über Fields gehts auch nicht und Open, was teilweise bei Delphi auch ging, wird abgelehnt, da es ein Non-Select-Statement darstellt.
Wie bringe ich den einer TSQL_Query bei, einen Rückgabewert einer StoredProc auch wieder auszuspucken?
Über Params gehts nicht, über Fields gehts auch nicht und Open, was teilweise bei Delphi auch ging, wird abgelehnt, da es ein Non-Select-Statement darstellt.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
@monta
DB-System ?
Nach einem select (in einer SP) bekommst du ein nicht aktualisierbares recordsetobject, zusätzlich hat man schon die Möglichkeit in Params das result zu checken.
Eine query wird sich dir richtigerweise verweigern, das ganze ist eine Stored Procedure und muss auch so abgehandelt werden (mit execute). Verlass dich nicht darauf , das das Programm errät was du willst, sondern definiere gleich, das ganze als Stored Procedure und handle es auch so ab.
DB-System ?
Was erwartest Du zurück?Über Params gehts nicht, über Fields gehts auch nicht und Open, was teilweise bei Delphi auch ging, wird abgelehnt, da es ein Non-Select-Statement darstellt.
Nach einem select (in einer SP) bekommst du ein nicht aktualisierbares recordsetobject, zusätzlich hat man schon die Möglichkeit in Params das result zu checken.
Eine query wird sich dir richtigerweise verweigern, das ganze ist eine Stored Procedure und muss auch so abgehandelt werden (mit execute). Verlass dich nicht darauf , das das Programm errät was du willst, sondern definiere gleich, das ganze als Stored Procedure und handle es auch so ab.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
sorry, ich war etwas kanpp heut Nacht.
Wie selects funktionieren ist mir schon klar, und in StoredProcs sind Selects, wenns nur um die daten geht meist überflüssig.
Aber das geht auch am Thema vorbei, sondern ich definier über returns in Firebird (2.0) den Rückgabewert als Ausgabeparameter:
Was dazwischen passiert spielt ja keine große Rolle, der Rückgabewert ist auf jeden Fall aktiviert und wird auch ausgegeben, wenn ich die SP in IbExpert ausführe.
Nur diesem bracuh ich eben nach Programmaufruf wieder zurück, weil ich den Wert als Primärschlüssel für weitere Relationen benötige, weis aber nicht, wie ich ihn aus der TSQLQuery prinzipiell auslesen kann.
Wie selects funktionieren ist mir schon klar, und in StoredProcs sind Selects, wenns nur um die daten geht meist überflüssig.
Aber das geht auch am Thema vorbei, sondern ich definier über returns in Firebird (2.0) den Rückgabewert als Ausgabeparameter:
Code: Alles auswählen
/*in der Declaration der SP:*/
returns (
ZMAIN_ID integer)
/*und zur Rückgabe dann einfache Wertzuweisung*/
ZMAIN_ID = :YMAIN_ID;
Nur diesem bracuh ich eben nach Programmaufruf wieder zurück, weil ich den Wert als Primärschlüssel für weitere Relationen benötige, weis aber nicht, wie ich ihn aus der TSQLQuery prinzipiell auslesen kann.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Was setzt du für Komponenten ein für den Zugriff auf Firebird ? Zeos ?
Unter D7/ADO bekommt man den 'return' als param[0] zurück. Ich gehe aber davon aus, das das ganze auch stark von der verwendeten Zugriffskomponente abhängig ist (Vor allen die Frage, wo).
Werd mal meinen Firbird hochfahren und mir ein Beispiel zimmern.
Unter D7/ADO bekommt man den 'return' als param[0] zurück. Ich gehe aber davon aus, das das ganze auch stark von der verwendeten Zugriffskomponente abhängig ist (Vor allen die Frage, wo).
Werd mal meinen Firbird hochfahren und mir ein Beispiel zimmern.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Ok, es ist komplett unterschiedlich zwischen Firebird und MS-SQL. Werde mal ein bischen herumprobieren, da ich mich sowieso wieder in den Firebird einarbeiten muss.RETURN
The RETURN statement in MS SQL will return an output integer variable and stop execution. Firebird supports the EXIT statement, which will jump to the final END in stored procedures. However, there is no implicit output variable, so if you need to return a code (it's optional in MS SQL), you will need to declare an output variable in the procedure.
Nicht bei 3-tier, bzw. wenn du mit einem 'big server - thin client' Konzept unterwegs bist. Spricht zwar etwas gegen RAD. Nach aussen arbeite ich immr mit Views und SP. Stell dir vor ein DAU macht einWie selects funktionieren ist mir schon klar, und in StoredProcs sind Selects, wenns nur um die daten geht meist überflüssig.
auf eine Buchungstabelle mit 10 Millionen Datensätze OHNE gute where Klausel.select * from langetabelle
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Nein, die mitgelieferten aus dem Package SQLdbaf0815 hat geschrieben:Was setzt du für Komponenten ein für den Zugriff auf Firebird ? Zeos ?
Das stimmt allerdings. Ich versuch auch möglichst viel, zumindest was Manipulationen angeht, eigentlich alles, auf den Server zu legen und mit Views zu arbeiten. Schon, weil eventuell auch mal ein anderer Client fällig werden könnte (Browserbasiert), und das dann wesentlich einfacher sein dürfte.Nicht bei 3-tier, bzw. wenn du mit einem 'big server - thin client' Konzept unterwegs bist. Spricht zwar etwas gegen RAD. Nach aussen arbeite ich immr mit Views und SP. Stell dir vor ein DAU macht ein