Re: Firebird SQL




"Robert Wachtel" <rwachtel@xxxxxx> schrieb im Newsbeitrag
news:4609rtF8r3i8U1@xxxxxxxxxxxxxxxxx

Im Zweifelsfalle könnte man sich ja mit einer Stored Procedure
helfen:

CREATE PROCEDURE SET_GENERATOR_TO_MAX_ID
AS
DECLARE VARIABLE MAXID INTEGER;
BEGIN
SELECT MAX(ID) FROM my_table
INTO :MAXID;
SET GENERATOR GEN_DS_ID TO :MAXID + 1;
END

Mit EXECUTE STATEMENT geht's sogar noch allgemeiner:

====
CREATE PROCEDURE SET_GENERATOR_TO_MAX_ID (
TableName VARCHAR(32),
IDName VARCHAR(32),
GeneratorName VARCHAR(32))
AS
DECLARE VARIABLE MaxID INTEGER;
BEGIN
EXECUTE STATEMENT 'SELECT MAX(' || IDName || ') FROM ' || TableName
INTO :MaxID;
EXECUTE STATEMENT 'SET GENERATOR ' || GeneratorName || ' TO ' ||
cast(:MaxID + 1 AS CHAR(32));
END
====

Schöne Grüße
Georg


.