Ver Mensaje Individual
  #3  
Antiguo 23-09-2013
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Reputación: 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