Power Builder - Selecion con cursores y select

 
Vista:

Selecion con cursores y select

Publicado por Augusto (2 intervenciones) el 21/04/2005 23:59:32
Tengo este problema, solo me llena el primer valor y me sale error en if SQLCA.sqlcode <> 0 then, a que se debe

// *********** declara curso para Servicios Públicos Energia electrica************
declare cur_servicio cursor for select codServicio, nomServicio, CodClasificacionServicio
from dbo.Servicio
where codclasificacionservicio = 1;

OPEN cur_Servicio ;
if SQLCA.sqlcode < 0 then
MessageBox("Open Cursor",SQLCA.sqlerrtext)
end if
DO WHILE SQLCA.sqlcode = 0
FETCH cur_Servicio INTO :CodigoServicio, :NameServicio, :clasificacionServicio ;
if SQLCA.sqlcode < 0 then
MessageBox("Fetch Error",SQLCA.sqlerrtext)
elseif SQLCA.sqlcode = 0 then
// ************************* Captura y muestra el nombre de la energía electrica ***************************
String NombreServicio
SELECT NomServicio into :NombreServicio
FROM dbo.Servicio;
ddlb_energiaelectrica.additem(NombreServicio)
if SQLCA.sqlcode <> 0 then
MessageBox("Singleton Select", SQLCA.sqlerrtext)
end if
end if
LOOP
CLOSE cur_Servicio;
if SQLCA.sqlcode <> 0 then
MessageBox("Close Cursor", SQLCA.sqlerrtext)
end if

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Selecion con cursores y select

Publicado por Julio (137 intervenciones) el 22/04/2005 00:23:10
/*
Para empezar, creo que es mejor declarar las variables desde el inicio y no en tu bucle
*/

String NombreServicio

declare cur_servicio cursor for select codServicio, nomServicio, CodClasificacionServicio
from dbo.Servicio
where codclasificacionservicio = 1;

OPEN cur_Servicio ;
if SQLCA.sqlcode <> 0 then
MessageBox("Open Cursor",SQLCA.sqlerrtext)
return
else
do while true
setnull(NombreServicio)
FETCH cur_Servicio INTO :CodigoServicio, :NameServicio, :clasificacionServicio ;
if sqlca.sqlcode = 100 then exit;
SELECT NomServicio into :NombreServicio
FROM dbo.Servicio;
//-- creo que aqui deberias agregar alguna condicion WHERE algo...
choose case sqlca.sqlcode
case 0
ddlb_energiaelectrica.additem(NombreServicio)
case 100
messagebox('Error de consulta','Sin datos encontrados')
case else
messagebox('Error de consulta tabla ...',sqlca.sqlerrtext,StopSign!)
exit;
end choose
loop
close cur_Servicio;
/*--- ya no tienes que agregar un if sqlca.sqlcode aqui porque se supone que el cursor abrio con exito!!! y no tendria errores al cerrarlo
*/
end if

//---- A ver chequealo y que tal sale, si no mandalo de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar