AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stored pocedure

Ein Thema von kiar · begonnen am 17. Mai 2004 · letzter Beitrag vom 21. Mai 2004
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#11

Re: Stored pocedure

  Alt 18. Mai 2004, 11:30
Zitat von Hansa:
viel zu kompliziert :

SQL-Code:
SET TERM ^;

CREATE PROCEDURE HELPME RETURNS (LETZTEAENDERUNG TIMESTAMP)
AS
begin
  LETZTEAENDERUNG = 'NOW';
  suspend;
end
^
Was mich nur wundert : derselbe Code in einem Trigger geht bei mir von Delphi aus nicht.
Stimmt Die Abfrage ist etwas doof formuliert. Hab ja nur das Beispiel übernommen, aber Du hast schon recht, das Ergebnis ist das gleiche.

Gruß,
Marcel
Marcel Gascoyne
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: Stored pocedure

  Alt 18. Mai 2004, 12:20
allerdings will es mir nicht gelingen, eine ID als Input-Parameter mitzugeben.

SQL-Code:
ALTER PROCEDURE HELPME (
    ID INTEGER)
AS
DECLARE VARIABLE L TIMESTAMP;
  SELECT LETZTEAENDERUNG FROM ART8 WHERE ID = :ID
  INTO :L;
  IF L <> 'NOWTHEN
    LETZTEAENDERUNG = 'NOW';
  SUSPEND;
Da stimmt irgendwas mit der Syntax nicht. 8) Er beschwert sich über das Select.


[EDIT]

so gehts :

SQL-Code:
ALTER PROCEDURE HELPME (
    ID INTEGER)
RETURNS (
    LETZTEAENDERUNG TIMESTAMP)
AS
DECLARE VARIABLE L TIMESTAMP;
BEGIN
  SELECT LETZTEAENDERUNG FROM ART8 WHERE ID = :ID
  INTO :L;
  IF (L <> 'NOW') THEN
    LETZTEAENDERUNG = 'NOW';
  SUSPEND;
END;
Jetzt ist nur noch die Frage, wie man solch eine Prozedur Feld/Tabellen- unabhängig machen kann.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#13

Re: Stored pocedure

  Alt 18. Mai 2004, 15:25
hallo hansa,

vielleicht kann man, der procedure den Namen der tabelle mitgeben
SQL-Code:

ALTER PROCEDURE HELPME (
    ID INTEGER, TABName Varchar(20))
AS
und dann in der procedure einfach TbName aufrufen
SELECT LETZTEAENDERUNG FROM TABNAme WHERE raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Stored pocedure

  Alt 18. Mai 2004, 15:34
hast du jetzt nen Interbase server? ... ich hab jetzt vielleicht was überlesen(nur auf topicanfang geschaut) allerdings ist das ne pottenzielle "Fehlerquelle"
Nico Müller
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: Stored pocedure

  Alt 18. Mai 2004, 16:02
und woher kommt TabName ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#16

Re: Stored pocedure

  Alt 18. Mai 2004, 16:45
Zitat von Hansa:

Jetzt ist nur noch die Frage, wie man solch eine Prozedur Feld/Tabellen- unabhängig machen kann.
Wäre nun interessant ob Du Interbase oder Firebird verwendest. Ab Firebird 1.5 würde ich folgendes vorschlagen:

SQL-Code:
CREATE PROCEDURE HELPME (
  P_ID INTEGER,
  P_TABELLE VARCHAR(31),
  P_FELD VARCHAR(31)
)
RETURNS (
    LETZTEAENDERUNG TIMESTAMP
)
AS
DECLARE VARIABLE SQL VARCHAR(255);
BEGIN
  SQL = 'select ' || P_FELD || ' from ' || P_TABELLE || ' where ID = ' || CAST(P_ID AS VARCHAR(15));
 
  EXECUTE STATEMENT :SQL INTO :LETZTEAENDERUNG;

  IF (LETZTEAENDERUNG <> 'NOW') THEN
    LETZTEAENDERUNG = 'NOW';

  SUSPEND;
END;
Gruß,
Marcel
Marcel Gascoyne
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: Stored pocedure

  Alt 18. Mai 2004, 17:03
Vorsichtshalber Firebird, aber eher dann 1.0.296 ? Wer weiß ? Zumindest will ich nicht etwas verwenden, das mit Borland-Interbase mit Sicherheit nicht mehr läuft. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#18

Re: Stored pocedure

  Alt 18. Mai 2004, 17:33
Würde es nicht auch so (oder so ähnlich ) funktionieren?
Rüchkgabewert -> Function, oder ist der IB Dialekt so verschieden von PL/SQL?

SQL-Code:
CREATE OR REPLACE FUNCTION HelpMe(p_ID Integer
                                 ,p_Owner Varchar2 := Null -- optional parameter
                                 ,p_Tabelle Varchar2
                                 ,p_Feld Varchar2)
  RETURN Timestamp
IS
  LetzteAenderung Timestamp;
  TableIdent Varchar2(65);
Begin

  If p_Owner Is not Null Then
    TableIdent := P_Owner || '.' || p_Tabelle;
  Else
    TableIdent := p_Tabelle;
  End If;

  EXECUTE IMMEDIATE 'SELECT ' || P_FELD || chr(10) ||
                    'FROM ' || TableIdent || chr(10) ||
                    'WHERE ID = :i_ID'
    INTO LetzteAenderung
    USING P_ID;

  RETURN LetzteAenderung;

EXCEPTION
  When No_Data_Found Then
  -- Wenn nix da ist, braucht man auch keinen Fehler ;)
    RETURN Null;
End;
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#19

Re: Stored pocedure

  Alt 18. Mai 2004, 17:39
hallo robert,

firebird 1.0 kennt kein EXECUTE Statement, marcel ist ja auch von firebird 1.5 ausgegangen
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: Stored pocedure

  Alt 18. Mai 2004, 17:43
Zitat von Robert_G:
-- Wenn nix da ist, braucht man auch keinen Fehler
RETURN Null;
nene, so aber dann doch nicht. Wenn nichts da ist kann das sehr wohl einen Fehler darstellen. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 03:51 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