Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 28.05.03 13:43 
Hi,

in der Datenbank habe ich eine stored procedure drinne. Wie geht es jetzt mit Delphi weiter? Brauche ich jetzt für jede SP ein DataSet? Ich habe das mal probiert und das geht, aber nur nachdem ich die SP nochmals von Hand in der DFM abgeändert habe. Das ganze soll zur Laufzeit passieren, muß ich da trotzdem bei den SQLs des DataSet irgendwas hinschreiben, was eigentlich keinen Sinn macht? Und die SP hat auch eine Eigenschaft SQL, wo ich was reinschreiben kann. Ja, wo muß nun wann was rein :?:

_________________
Gruß
Hansa


Zuletzt bearbeitet von hansa am Mi 28.05.03 13:57, insgesamt 1-mal bearbeitet
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 28.05.03 13:49 
Hi,
ich weiß nicht, auf welcher db du arbeitest, und mit welchen komponenten, aber von den IBX gibt es die TIBStoredProc komponente...

gruß
Ken
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 28.05.03 13:51 
genau darum dreht sich die Frage. 8)

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 28.05.03 13:54 
Titel: Re: Wo stored procedures speichern?
hansa hat folgendes geschrieben:
Ich habe das mal probiert und das geht, aber nur nachdem ich die SP nochmals von Hand in der DFM abgeändert habe. Das ganze soll zur Laufzeit passieren, muß ich da trotzdem bei den SQLs des DataSet irgendwas hinschreiben, was eigentlich keinen Sinn macht? Und die SP hat auch eine Eigenschaft SQL, wo ich was reinschreiben kann. Ja, wo muß nun wann was rein :?:


Ich versteh nicht ganz, was Du meinst... Du hast eine Stored Procedure in einer Interbase-DB? Warum musst Du die SP dann in der DFM ändern? Das geht nur auf der Datenbank. Und warum hat Deine SP eine Eigenschaft? Verwendest Du die Kompo IBStoredProc?

Du musst erstmal eine Stored Procedure in der Datenbank erstellen. Da gibt es dann 2 Arten von Prozeduren:

  • Entweder eine SELECT-Proz., die Ergebnisse zurückliefert, für diese brauchst Du einen Query/Dataset
  • Oder du hast eine Execute-Proz, die Du mit IBStoredProc aufrufen kannst.

Aber in keinem Fall hat eine SP irgendeine Eigenschaft, Du musst sie in SQL explizit aufrufen, das ist kein Objekt in Delphi.

Oder versteh ich das jetzt total falsch?
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 28.05.03 14:01 
Hi grohne,

ich hab den Titel abgeändert, sonst wird das anscheinend nix. :mrgreen: Um es noch einmal deutlich zu sagen: die DB enthält die SP und die funktioniert wie gewünscht. Aber auf der Delphi-Seite ist mir einiges unklar. Da kommen Fehler wie "query is empty" oder so, weil irgendwo die SQLs hin müssen usw.

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 28.05.03 14:03 
Tja, hast Du jetzt eine SELECT-Prozedur oder eine EXEC-Prozedur?
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 28.05.03 14:16 
SELECT, aber wenn wir schon dabei sind, wozu braucht man eine EXEC :?: Das wird ja wohl mehr sein, als eine Arbeitsbeschaffungs-Maßnahme für Datenbanken, :lol: bräuchte da ein Beispiel.

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 28.05.03 14:25 
Dann machst Du das genauso, wie bei einer SQL-Abfrage für eine Tabelle, also am besten mit einem Dataset. Denn das IBStoredProc ist nur für EXEC-Procs, weil die Kompo keine Rückgabewerte empfangen kann.

Also mit einer SQL-Prozedur à la
ausblenden Quelltext
1:
SELECT * FROM deine_proz(ein_parameter);					


Eine EXEC-Prozedur ist da, um verschiedene Arbeiten an der Datenbank zu übernehmen und den Client/das Netzwerk zu entlasten. Z.B. man will die IDs von Datensätzen durchgehen und die Lücken dazwischen wieder füllen, also immer wenn eine ID gelöscht wurde, die nachfolgenden um eins hochsetzen. Dafür nimmt man z.B. eine EXEC-Proz, dann muss nicht die komplette Tabelle (mit was weiß ich wieviel 100-tausend Datensätzen zum Client transportiert werden.