ich versteht zwar nicht den sinn folgender zeile
IF (L <> 'NOW') THEN LETZTEAENDERUNG = 'NOW';
aber es geht ja hier um ein variables
sql statement. Bei Firebird
gibt es hierzu das maechtige feature 'execute statement', damit kann man sowas realisieren.
Unter Interbase gibt es das meines wissens nicht (korrigiert mich wenn dem nicht so ist)
Hier die Prozedure:
Code:
CREATE PROCEDURE HELPME (
TABNAME VARCHAR(32),
FIELDNAME VARCHAR(32),
ID INTEGER)
RETURNS (
LETZTEAENDERUNG TIMESTAMP)
AS
DECLARE VARIABLE
SQL VARCHAR(512);
DECLARE VARIABLE L TIMESTAMP;
BEGIN
EXECUTE STATEMENT 'SELECT ' || FIELDNAME || ' FROM ' || TABNAME
|| ' WHERE ID = ' || :ID INTO :L;
IF (L <> current_timestamp) THEN
LETZTEAENDERUNG = current_timestamp;
SUSPEND;
END
die systemvariablen now und today sind veraltet, man benutzt künftig besser current_timestamp bzw. current_date
[SORRY WAR ZU SCHNELL UND HABE DEN THREAD NICHT BIS ANS ENDE GELESEN; WAR JA ALLES SCHON BEKANNT BIS AUF DIE SACCHE MIT CURRENT_TIMESTAMP]