Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Crear Procemiento Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=45209)

_Willa 26-06-2007 16:11:32

Crear Procemiento Almacenado
 
He estado buscando esta misma pregunta, pero no he visto
la forma que se ha resolvido, pues haciendo lo mismo me sigue haciendo
lo mismo

estoy trabajando con Interbase, concretamente con una herramienta
que trae que se llama -Intearactiv SQL- IBConsole -

introduzco este codigo
Código SQL [-]
CREATE PROCEDURE examplex
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
   THE_RETURN=10;
END
Incluso trate de hacer esto...
Código SQL [-]
CREATE PROCEDURE examplex (the_name CHAR(80))
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
   THE_RETURN=GEN_ID(PRO_ID_GEN,1);
END

Pero me da exactamente el mismo error, no entiendo la verdad!!


y me da el siguiente error

Código PHP:

Dynamic SQL Error
SQL error code 
= -104
Unexpected end of command
Statement
CREATE PROCEDURE examplex
RETURNS 
THE_RETURN INTEGER)
AS
BEGIN
  THE_RETURN
=10 


_Willa 26-06-2007 16:16:00

he modificado para hacer otra prueba tal que.
Código SQL [-]
CREATE PROCEDURE examplex (the_namex CHAR(80))
RETURNS ( THE_RETURNx INTEGER)
AS
BEGIN
   THE_RETURNx=GEN_ID(PRO_ID_GEN,1);
END

y me sigue dando el mismo error ??

SQL error code = -104
Unexpected end of command
Statement: CREATE PROCEDURE examplex (the_namex CHAR(80))
RETURNS ( THE_RETURNx INTEGER)
AS
BEGIN
THE_RETURNx=GEN_ID(PRO_ID_GEN,1)

Sabiendo que el Generador
CREATE GENERATOR "PRO_ID_GEN";
esta creado y dispone de valor

Grachia!!

eduarcol 26-06-2007 16:17:04

No estoy seguro que ese sea el problema pero fijandome en lo que yo he hecho veo unas diferencias prueba asi:

Código SQL [-]
CREATE PROCEDURE examplex
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
   THE_RETURN=10;
   Suspend;
END

tengo entendido que suspend se utiliza cuando esperas devolver algo para indicar que termino la sentencia o algo por el estilo prueba y avisas

Lepe 26-06-2007 19:55:11

Además, para llamar a ese SP tendrás que usar un Query así:
Código Delphi [-]
select * from examplex('hola hola');
y abrir la consulta (Open), ya que es un procedimiento almacenado de selección y no de acción.

Saludos

_Willa 27-06-2007 09:01:24

Gracias a todos, por las posibles respuestas.

eduarcol el ejemplo que das
Código SQL [-]
CREATE PROCEDURE examplex
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
   THE_RETURN=10;
   Suspend;
END

Al ejecutar este da el mismo error de siempre
Código:

Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE PROCEDURE examplex
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
  THE_RETURN=10

Tras algunas pruebas alfin ya no me dio el error, el tema no es el SUSPEND
q no dudo, que puede influir para otras cosas.
Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE examplex
RETURNS ( THE_RETURN INTEGER)
AS
BEGIN
   THE_RETURN=10;
   Suspend;
END
^    /* ojo este es el indicador de fin de procedimiento, MUY IMPORTANTE  */
SET TERM ; ^

El tema esta en indicar o dilimitar cuando empieza el procedimiento
y cuando terminal, por defecto en interbase acaba en el ultimo punto y coma
pero como veis en el primer ejemplo, no lo debe controlar muy bien, por eso
lo que se hace es cambiar el delimitador de fin de procedimiento por un
caracter un poco "más desconocido o no usado", en este caso es el ^,
ojo importante al final del ultimo END, del procedimiento poner el ^
ya que si no estaria dando el mismo error de siempre.

Esto de controlar el fin del procedimiento , parece que INTERBASE lo lleva muy a raja tabla!!., y la verdad no se pq no acaba en el ultimo END, que seria
lo más lógico.


La franja horaria es GMT +2. Ahora son las 22:19:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi