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)
-   -   Problema con stored procedure (https://www.clubdelphi.com/foros/showthread.php?t=26173)

dape 14-10-2005 19:38:20

Problema con stored procedure
 
Hola amigos, acá otra vez con problemas, le comento que estoy utilizando por primera vez stored procedure, y me ha salido el siguiente error:

Código:


Dynamic SQL Error
SQL error code = -104
Unexpected end of command
statement: create procedure max_dpto
returns (id_dpto integer)
as
declare variable codigo integer

Este error me sale cuando pongo punto y coma (;) al final de integer y si lo quito se sale que falta eso.

No sé si les servirá pero pongo el sp que quiero crear:

Código:


create procedure max_dpto
  returns (id_dpto integer)
as
  declare variable codigo integer;
begin
 select max(id_dpto) from dpto into :codigo
 if (:codigo is null) then
 begin
  id_dpto = 0;
 end
 else
 begin
  id_dpto = codigo + 1;
 end;
end;

Espero que alguno de ustedes tenga alguna idea sobre el error que me sale.

Desde ya les doy las gracias por la ayuda que tengan a bien darme.

Saludos desde Tacna - Perú

David

lpmlpm 14-10-2005 19:54:20

intentalo asi:

Código SQL [-]
 create procedure max_dpto
  returns (id_dpto integer)
as
  declare variable codigo integer;
begin
 select max(id_dpto) from dpto into :codigo; --aqui si lleva punto y coma
 if (:codigo is null) then
 begin
  id_dpto = 0;
 end
 else
 begin
  id_dpto = codigo + 1;
 end --aqui no lleva punto y coma
end --ni aqui tampoco

dape 16-10-2005 19:51:51

sigue igual
 
Hola hize lo que se me indicó en el post anterior pero sigue saliendome el mismo error, ese error al final del integer.

Saludos desde Tacna - Perú

David

Lepe 17-10-2005 14:11:52

Cambiale el nombre del parámetro de entrada, quizás haya conflictos, ya que se llama igual que el campo.

suerte

rastafarey 17-10-2005 17:10:25

Resp
 
Mira usa este codigo y listo. ID es el campo en MyTabla de la bd
Código SQL [-]
Select Coalesce(Max(ID)+1, 0) From MyTabla

dape 18-10-2005 06:04:44

Se resolvio el problema, gracias
 
¡Hola a todos! estoy feliz porque se resolvió el problema, lo que hize fue cambiar de herramienta de administración, usualmente uso el IBConsole que venía o viene con el Interbase, luego probé con el IBQuery y tampoco andaba, fue entonces cuando hize la pregunta al foro, pero me quede con la duda de que mi viejo IBconsole sea el problema así que descargué e instalé el trial del IBExpert y adivinen que pasó, ¡aceptó el SP! ¡qué alegría!, ahora veo que tengo que dejar a mi viejo y querido IBConsole :( como dice la canción: "...todo tiene su final, nada dura para siempre, tenemos que recordar que no existe eternidad..."; gracias mil por la ayuda brindada.

Una cosita más, sobre el coalesce ¿el valor que me devuelve se almacena en algún lugar? es decir, ¿cómo se utiliza?.

Gracias otra vez y buscare algo sobre esa función y la lista de las demás para conocer aprender algo más.

Saludos desde Tacna - Perú

David

Lepe 18-10-2005 07:02:25

Ahora habría que probar si el SP (Store Procedure) funciona correctamente. De hecho, veo raro que antes del último end no haya un Suspend, al no haberlo, no creo que devuelva nada.

para usar el SP solo tienes que poner una consulta con su Sql := 'select id_dpto from maxdpto'

Tanto si usas el Coalesce como el Store procedure, el resultado es el mismo, una consulta de una sola fila y con una sola columna. Puedes poner un DBedit, o Grid asociado a él para ver el resultado.

saludos

rastafarey 18-10-2005 20:47:06

Resp
 
Si puedes lees es un funcion.
Y no pregustes tantas estupideces.

dec 19-10-2005 05:57:36

Hola,


Cita:

Empezado por rastafarey
(...) Y no pregustes tantas estupideces.

Creo que ese comentario está demás rastafarey. Lo atribuyo a un mal momento, por los cuales todos pasamos, me temo. No estaría nada mal que te disculparas con dape, creo que eso demostraría que eres sabio, por rectificar, y para mí tengo que dape comprendería que te hubieras excedido en este caso, pero que no es así como sueles responder, seguramente. No temas rectificar y piensa en la firma de alguno de nuestros compañeros: "el que comete un fallo y no rectifica comete otro fallo". Debe ser una cita de Confucio, por lo menos. :)

rastafarey 19-10-2005 16:20:26

Resp
 
Disculpeme por la forma.

dec 19-10-2005 22:13:10

Hola,


Cita:

Empezado por rastafarey
Disculpeme por la forma.

Muchas gracias, en lo que a mí toca rastafarey. No esperaba menos de ti. :)

dape 20-10-2005 05:13:23

Todo bien, compañeros como siempre. :D

Saludos desde Tacna - Perú

David


La franja horaria es GMT +2. Ahora son las 14:52:30.

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