PDA

Ver la Versión Completa : Ejemplos IBScript


subzero
17-05-2005, 22:17:25
Hola amigos y amigas del foro.

Mi pregunta es muy sencilla alguien sabe donde puedo encontrar ejemplos donde muestren el manejo de IBScript, ya he realizado busquedas y he entrado a la página de la Borland pero no he localizado nada.


Me genera un error donde me dice que la propiedad Terminator no existe


Si pueden ayudame les estare muys agradecido.

AGAG4
19-05-2005, 01:51:40
La propiedad Terminator te indica el simbolo con que terminará el Script, yo lo dejo en punto y coma ( ; ) si no lo tiene al final del script te marca el error....

Saludos.

subzero
19-05-2005, 15:36:41
Entendido pero como logro generar un procedimiento almacenado el cual debe devolver algún valor? por ejemplo


..........
with IBScript1 do
begin
Script.Clear;
Script.Add('SET TERM ^;');
Script.Add('CREATE PROCEDURE PROCEDIMIENTO_PRUEBA');
Script.Add('AS DECLARE VARIABLE CODANE VARCHAR(16);');
Script.Add('DECLARE VARIABLE NOMBRE VARCHAR(100);');
Script.Add('AS BEGIN');
Script.Add('SELECT CODIGO_DANE, ESTAB_NOMBRE');
Script.Add('FROM ESTABLECIMIENTOS');
Script.Add('INNER JOIN NUCLEOS ON (ESTAB_NUC_NUMERO=NUC_NUMERO)');
Script.Add('INNER JOIN SECRETARIAS ON (NUC_SEC_CODIGO=SEC_CODIGO)');
Script.Add('INNER JOIN MUNICIPIOS ON (SEC_MUN_CODIGO=MUN_CODIGO)');
Script.Add('WHERE (MUN_CODIGO = ''70001'')');
Script.Add('FOR SELECT ESTAB_CODIGO_DANE, ESTAB_NOMBRE');
Script.Add('FROM ESTABLECIMIENTOS');
Script.Add('INNER JOIN NUCLEOS ON (ESTAB_NUC_NUMERO=NUC_NUMERO)');
Script.Add('INNER JOIN SECRETARIAS ON (NUC_SEC_CODIGO=SEC_CODIGO)');
Script.Add('INNER JOIN MUNICIPIOS ON (SEC_MUN_CODIGO=MUN_CODIGO)');
Script.Add('WHERE (MUN_CODIGO = ''70001'')');
Script.Add('INTO :CODANE, :NOMBRE DO');
Script.Add('BEGIN');
Script.Add('UPDATE TEMP_EVAL_INT_GRAF_ADMIN');
Script.Add('SET ESTAB_NOMBRE = :NOMBRE');
Script.Add('WHERE CODIGO_DANE =:CODANE;');
Script.Add('SUSPEND;');
Script.Add('END^');
Script.Add('SET TERM ;^');
end;
IBScript1.ExecuteScript;
..........

AGAG4
19-05-2005, 16:49:05
Quieres CREAR ó LLAMAR un Proc. Almacenado ????
Por lo que veo quieres crearlo, pero tengo entendido que no es de esa forma para hacerlo para crear un store procedure yo lo hago por medio del IBExpert puedes bajartelo en www.ibexpert.com (http://www.ibexpert.com/) y si quieres llamarlo en la paleta de Interbase de delphi viene un componente ibStoredProc aqui puedes mandar a llamarlo.

Saludos....

rastafarey
19-05-2005, 17:15:04
Aqui tienes un ejemplo

http://www.clubdelphi.com/foros/showthread.php?t=21477

Y para llamarlo simplemente has un select como si lo hiciera sobre uan tabla y si recibe prametro pasales en la llamada
ejlp

Select c1, c2 From Sp1(1, 2);

subzero
19-05-2005, 17:17:32
Si te entiendo, crearlo en la misma base de datos ya sea con el IBConsole, EMS, IBExpert, con cualquier programa que te permita crearlo, pero el problema es crearlo en tiempo de ejecución he alli el dilema ;)

Gracias-

rastafarey
19-05-2005, 17:19:39
Mira es este es mi msn yahoo
estoy en linea

Rastafareysoft@yahoo.es

Te espero dale rapidito que tengo trabajo

subzero
19-05-2005, 19:00:33
Lo soluciones agregandole :

Params.Clear;
ParamCheck := false;
ExecSQL;

a un IBQuery.


with IBQuery1 do
begin
sql.Clear;
sql.Add('CREATE PROCEDURE PROCEDIMIENTO_PRUEBA');
sql.Add('AS DECLARE VARIABLE CODANE VARCHAR(16);');
sql.Add('DECLARE VARIABLE NOMBRE VARCHAR(100);');
sql.Add('AS BEGIN');
sql.Add('SELECT CODIGO_DANE, ESTAB_NOMBRE');
sql.Add('FROM ESTABLECIMIENTOS');
sql.Add('INNER JOIN NUCLEOS ON (ESTAB_NUC_NUMERO=NUC_NUMERO)');
sql.Add('INNER JOIN SECRETARIAS ON (NUC_SEC_CODIGO=SEC_CODIGO)');
Script.Add('INNER JOIN MUNICIPIOS ON (SEC_MUN_CODIGO=MUN_CODIGO)');
sql.Add('WHERE (MUN_CODIGO = ''70001'')');
sql.Add('FOR SELECT ESTAB_CODIGO_DANE, ESTAB_NOMBRE');
sql.Add('FROM ESTABLECIMIENTOS');
sql.Add('INNER JOIN NUCLEOS ON (ESTAB_NUC_NUMERO=NUC_NUMERO)');
sql.Add('INNER JOIN SECRETARIAS ON (NUC_SEC_CODIGO=SEC_CODIGO)');
sql.Add('INNER JOIN MUNICIPIOS ON (SEC_MUN_CODIGO=MUN_CODIGO)');
sql.Add('WHERE (MUN_CODIGO = ''70001'')');
sql.Add('INTO :CODANE, :NOMBRE DO');
sql.Add('BEGIN');
sql.Add('UPDATE TEMP_EVAL_INT_GRAF_ADMIN');
sql.Add('SET ESTAB_NOMBRE = :NOMBRE');
sql.Add('WHERE CODIGO_DANE =:CODANE;');
sql.Add('SUSPEND;');
sql.Add('END');
Params.Clear;
ParamCheck := false;
ExecSQL;
end;


Estoy abierto a cualquier otra sugerencia.....