AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Interbase und Stored Procedures
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase und Stored Procedures

Ein Thema von r_kerber · begonnen am 10. Nov 2003 · letzter Beitrag vom 10. Nov 2003
Antwort Antwort
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#1

Interbase und Stored Procedures

  Alt 10. Nov 2003, 11:54
Hallo,

ich versuche schon den gesamten Vormittag folgende Stored Procedure aus einen Beispiel:
SQL-Code:
create procedure LiesWerbeartikel (vorgabe decimal(8,2))
   select *
   from werbeartikel
   where preis > :vorgabe;
in eine Procedure für Interbase 6.5 zu überführen:

SQL-Code:
set term !! ;
create procedure LiesWerbeartikel (vorgabe Decimal(8,2))
as
begin
    select *
    from werbeartikel
    where preis > :vorgabe;
exit;
end !!
set term ; !!
Wo liegt hier mein Denkfehler?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 12:23
Hallo r_kerber,

in Interbase funktioniert es so:

SQL-Code:
CREATE PROCEDURE LIES_WERBEARTIKEL (
    VORGABE FLOAT)
RETURNS (
    ID INTEGER,
    NAME VARCHAR(20),
    PREIS FLOAT)
AS
begin
  /* Procedure Text */
  for select ID, NAME, PREIS FROM WERBEARTIKEL WHERE PREIS < :VORGABE
    into :ID, :NAME, :PREIS do
    suspend;
end
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 12:50
Hallo MrSpock,

ich habe es jetzt so hinbekommen (in der ISQL):
SQL-Code:
set term !! ;
CREATE PROCEDURE LIES_WERBEARTIKEL (
    VORGABE FLOAT)
RETURNS (
    ARTIKELNUMMER INTEGER,
    BESCHREIBUNG VARCHAR(250),
    PREIS FLOAT,
    LAGERBESTAND integer)
AS
begin
  /* Procedure Text */
  for select ARTIKELNUMMER, BESCHREIBUNG, PREIS, LAGERBESTAND FROM WERBEARTIKEL WHERE PREIS < :VORGABE
    into :ARTIKELNUMMER, :BESCHREIBUNG, :PREIS, LAGERBESTAND do
    suspend;

end !!
set term ; !!
Aber es wird mir immer nur ein Datensatz angezeigt Und heißt das auch, dass, wenn ich alle Spalten im Ergebnis sehen will, ich auch jede einzelne als Return angeben muß? Ich habe hier gerade eine Tabel mit 150 Spalten vor mir. Mir ist schon klar, dass es sehr unwahrscheinlich ist, dass ein solches Problem in der Praxis auftritt, aber wie war das doch mit den Pferden und der Apotheke?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 12:55
Hallo r_kerber,

deshalb habe ich das ja auch mit dem FOR SELECT ... DO geschrieben. Mit SUSPEND wird immer ein Datensatz zurückgegeben. Willst du alle Datensätze musst du das o.g. Konstrukt verwenden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 13:01
Welches Konstrukt?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 13:06
Hallo r_kerber,

oohps, mein Fehler, ich dachte, du hättest das FOR ... DO vergessen.

Wie rufst du die Procedure jetzt auf?

Du musst in der Abfrage schreiben:

SELECT * FROM LIES_WERBEARTIKEL(200)
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 13:19
Hallo MrSpock,

ich habe es so aufgerufen:execute procedure lies_werbeartikel(1000.00)
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 13:49
Hallo r_kerber,

ich meine mich zu erinnern, dass execute nur funktioniert, wenn nicht mehr als ein Datensatz geliefert wird, ansonsten ist SELECT zu benutzen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#9

Re: Interbase und Stored Procedures

  Alt 10. Nov 2003, 16:27
Bisher fand ich das Buch, aus dem die Beispiele sind ja ganz gut. Aber mit der Zeit bekomme ich immer mehr Probleme, die Beispiele nachzuvollziehen. Liegt teilweise daran, dass der Autor schon SQL-99 nutzt, zum anderen aber auch daran, dass SQL nicht gleich SQL ist, vor allem bei Stored Procedures. Und es sind auch einige "richtige" Fehler drin.
  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 14:18 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