Hola Angel.
En principio voy a decirte que estoy totalmente de acuerdo con
Casimiro. Pero a modo ilustrativo, ya sea que uses un componente
TIBSQL o un
TIBQuery, tenes que fijar la propiedad
ParamCheck en falso.
Un ejemplo trivial:
Código:
...
{
// Verificar si ya existe
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("SELECT RDB$PROCEDURE_ID FROM RDB$PROCEDURES");
IBQuery1->SQL->Add("WHERE RDB$PROCEDURE_NAME = 'SP_MULT'");
IBQuery1->Open();
if (IBQuery1->IsEmpty()) { // si no existe -> crearlo
IBSQL1->Close();
IBSQL1->ParamCheck = false; // <-
IBSQL1->SQL->Clear();
IBSQL1->SQL->Add("CREATE PROCEDURE SP_MULT(A INTEGER, B INTEGER)");
IBSQL1->SQL->Add("RETURNS(RESULT INTEGER) AS");
IBSQL1->SQL->Add("BEGIN");
IBSQL1->SQL->Add("RESULT = :A * :B;");
IBSQL1->SQL->Add("SUSPEND;");
IBSQL1->SQL->Add("END");
IBSQL1->ExecQuery();
} else
MessageBox(0, "El procedimiento almacenado ya existe", "", MB_ICONWARNING);
...
Saludos