![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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);
...
![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#2
|
||||
|
||||
|
Cita:
¡Ah! Pues no se me había ocurrido. Haré la prueba y os diré como ha ido. |
|
#3
|
||||
|
||||
Prueba rápida. Funcionó a la perfección. Muchísimas gracias a los dos. Me queda muchísimo por aprender.Gracias por tu aportación. Mientars escribías la respuesta estaba haciendo yo la prueba. |
|
#4
|
||||
|
||||
|
Solo por completar un poquillo más...
Un IBScript, como su nombre indica, puede albergar todo el código de creación de tablas, triggers, etc de la base de datos, TODO en un solo Script. Es más compacto y fácil de leer, sobre todo si lo tienes en un fichero de texto y lo cargas en ejecución. Se mete todo en la propiedad IBScript1.Script (TStrings) y se ejecuta con IBScript1.ExecuteScript (creo recordar). Por cierto, en lugar de "create procedure" puedes usar "create or alter procedure", también aplicable a tablas y otros elementos. Así no tienes que chequear si ya existe. No sé que versión de los IBX usas, puede que no deje usar esa sintaxis... por probar no pierdes nada. Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
||||
|
||||
|
Gracias por los comentarios. Sobre el mensaje de Lepe, que no sé si va dirigido a mi, decir que no uso los componentes IBX.
|
|
#6
|
||||
|
||||
|
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Las paletas de componentes que vienen con Builder.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| CREATE DATABASE ¿Desde Delphi? | champy | Firebird e Interbase | 3 | 07-08-2013 18:48:14 |
| llamar a procedure desde otra procedure | anubis | Varios | 23 | 04-03-2010 18:44:37 |
| CREATE PROCEDURE en Access ...? | Ledian_Fdez | SQL | 1 | 09-12-2009 10:22:54 |
| CREATE TABLE desde Delphi | egostar | Firebird e Interbase | 29 | 05-07-2007 20:15:00 |
| error en create function | lookmydoom | MySQL | 0 | 12-01-2007 04:20:59 |
|