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;