Subject Re: [firebird-support] STORE RDB$PROCEDURE_PARAMETERS failed
Author Helen Borrie
At 08:46 PM 17/01/2004 -0500, you wrote:
>When trying to create stored procedure, I get:
>
>Error at line 2
>unsuccessful metadata update
>STORE RDB$PROCEDURE_PARAMETERS failed
>attempt to store duplicate value (visible to active transactions) in
>unique index "RDB$INDEX_18"
>SQL - CREATE PROCEDURE GETTENANTDATALIST(DATEENTRY DATE, DATEUP DATE)

Index RDB$INDEX_18 is a unique index over RDB$PROCEDURE_NAME and
RDB$PARAMETER_NAME in the system table RDB$PROCEDURE_PARAMETERS. At the
really simple end of the problem, check the source for the declaration and
make sure you didn't accidentally copy-paste the same input parameter twice.

At the queasy end of the problem is the probability that you used a DML
command to delete the master record in RDB$PROCEDURES instead of the proper
approach, of using DROP PROCEDURE or RECREATE PROCEDURE. So your CREATE
PROCEDURE statement succeeds in inserting a new record into RDB$PROCEDURES
and bumps into the duplicate violation when attempting to insert another
set of parameters with the same old names.

If that's what you did, you could hit the system tables again (in exclusive
mode, natch) and try to delete the offending rows in
RDB$PROCEDURE_PARAMETERS.

DELETE FROM RDB$PROCEDURE_PARAMETERS WHERE RDB$PROCEDURE_NAME =
'GETTENANTDATALIST';

I hope you have a backup.

/hb