![]() |
Re: Stored pocedure
Zitat:
Gruß, Marcel |
Re: Stored pocedure
allerdings will es mir nicht gelingen, eine ID als Input-Parameter mitzugeben.
SQL-Code:
Da stimmt irgendwas mit der Syntax nicht. 8) Er beschwert sich über das Select.
ALTER PROCEDURE HELPME (
ID INTEGER) AS DECLARE VARIABLE L TIMESTAMP; SELECT LETZTEAENDERUNG FROM ART8 WHERE ID = :ID INTO :L; IF L <> 'NOW' THEN LETZTEAENDERUNG = 'NOW'; SUSPEND; [EDIT] so gehts :
SQL-Code:
Jetzt ist nur noch die Frage, wie man solch eine Prozedur Feld/Tabellen- unabhängig machen kann.
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; |
Re: Stored pocedure
hallo hansa,
vielleicht kann man, der procedure den Namen der tabelle mitgeben
SQL-Code:
und dann in der procedure einfach TbName aufrufenALTER PROCEDURE HELPME ( ID INTEGER, TABName Varchar(20)) AS
SQL-Code:
raik
SELECT LETZTEAENDERUNG FROM TABNAme WHERE
|
Re: Stored pocedure
hast du jetzt nen Interbase server? ... ich hab jetzt vielleicht was überlesen(nur auf topicanfang geschaut) allerdings ist das ne pottenzielle "Fehlerquelle" :mrgreen:
|
Re: Stored pocedure
und woher kommt TabName ? :mrgreen:
|
Re: Stored pocedure
Zitat:
SQL-Code:
Gruß,
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; Marcel |
Re: Stored pocedure
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)
|
Re: Stored pocedure
Würde es nicht auch so (oder so ähnlich :P ) 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; |
Re: Stored pocedure
hallo robert,
firebird 1.0 kennt kein EXECUTE Statement, marcel ist ja auch von firebird 1.5 ausgegangen |
Re: Stored pocedure
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz