Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2013
jfernandezt jfernandezt is offline
Registrado
NULL
 
Registrado: sep 2013
Posts: 1
Poder: 0
jfernandezt Va por buen camino
Smile Creacion De Procedimiento Almacenado Con If Y Select

Hola a todos, soy nuevo en Firebird y tengo problemas para crear un procedimiento almacenado, el cual me retorna un select de acuerdo a un parámetro de entrada, por favor necesito me ayuden a ver donde esta mi error de sintaxis, ya que no puedo ejecutarlo:

Código SQL [-]
create or alter procedure usp_cargar_cbo_1p
(
pc_tipo_tabla varchar(20)
)
returns
(
pn_codigo numeric(10,0),
pc_nombre varchar(200)
)
as
begin

if (c_tipo_tabla = 'categoria') then
begin

for select
cod_categoria,
nom_categoria
from categoria
into n_codigo,
c_nombre
do;

end

if (c_tipo_tabla = 'cliente') then
begin

for select
cod_cliente,
nom_cliente
from cliente
into n_codigo,
c_nombre
do;

end

suspend;

end;


Muchas gracias por su ayuda,

José Fernandez

Última edición por Casimiro Notevi fecha: 23-09-2013 a las 10:03:29.
Responder Con Cita
  #2  
Antiguo 23-09-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Solo tienes que mirar cualquier otro procedimiento almacenado para ver el error, por ejemplo, este mismo.

Has puesto el suspend fuera del bucle, por lo que no hace nada, mételo dentro. Antes del end.

Por cierto, recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 23-09-2013
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Poder: 0
birmain Va por buen camino
Código SQL [-]
create or alter procedure usp_cargar_cbo_1p
(
pc_tipo_tabla varchar(20)
)
returns
(
pn_codigo numeric(10,0),
pc_nombre varchar(200)
)
as
begin

if (c_tipo_tabla = 'categoria') then
begin

for select cod_categoria, nom_categoria
    from categoria
    into n_codigo, c_nombre
do suspend;

end

if (c_tipo_tabla = 'cliente') then
begin

for select cod_cliente, nom_cliente
    from cliente 
    into n_codigo, c_nombre
do suspend;

end


end;

Cada bucle for ..select, después del do puede contener un begin .. end con las lineas necesaria para procesar n_codigo, c_nombre. Si estas pariables son de salida y deben formar parte del cursor de salida al final del paréntesis begin .. end antes del end debe haber un suspend. Si no hay ningún procesamiento adicional y la única instrucción necesaria es el suspend no hace falta begin .. end (lo mismo que en pascal)

Podría quedarte así:

Código SQL [-]
create or alter procedure usp_cargar_cbo_1p
(
pc_tipo_tabla varchar(20)
)
returns
(
pn_codigo numeric(10,0),
pc_nombre varchar(200)
)
as
begin

if (c_tipo_tabla = 'categoria') then
begin

for select cod_categoria, nom_categoria
    from categoria
    into n_codigo, c_nombre
do begin
   n_codigo = n_codigo + 1; // en el supuesto de que esta instrucción fuera necesaria
   suspend;
   end

end

if (c_tipo_tabla = 'cliente') then
begin

for select cod_cliente, nom_cliente
    from cliente 
    into n_codigo, c_nombre
do suspend;

end


end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimiento Almacenado Devolver una Select granchop Firebird e Interbase 5 14-09-2006 09:57:03
ZeosDBO: ZStoredProc intenta hacer un SELECT a un Procedimiento Almacenado !!!! DobleSiete Conexión con bases de datos 1 24-05-2005 14:12:46
for select....do en procedimiento almacenado lledesma SQL 1 23-04-2004 08:03:01
Que es más eficiente, un procedimiento almacenado o un select de una vista Carlitos Firebird e Interbase 7 27-10-2003 11:12:09
Select a procedimiento almacenado ACK Firebird e Interbase 12 19-07-2003 20:13:28


La franja horaria es GMT +2. Ahora son las 23:51:20.


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
Copyright 1996-2007 Club Delphi