Hola a todos,   Gracias por sus comentarios. Ya solucioné el problema, usando 
PREPARE sql_statement from variable. En variable, la cual es VARCHAR(600), 
guardo la consulta SELECT. Aqui està el fragmento del  procedimiento como 
quedó.      declare c1 cursor for nConsulta;   DECLARE CONTINUE HANDLER FOR NOT 
FOUND SET END_TABLE = 1;      set vConsulta = 'select idEmpleado, numsoc, 
replace( replace( replace( replace( ' ||            'replace( trim( trim( 
trim(paterno) || '' '' || ' ||            'trim(materno) ) || '' '' || trim( 
trim(nombre) || '' '' || ' ||               'trim(nombre2) ) ), '','', '''' ), 
chr(34), '''' ), chr(39), '''' ), ' ||                       ''';'', '''' ), 
'':'', '''' ) as nombre, cfbrnm, b.puesto, ' ||            'tipoRelacionado, 
declarativa ' ||   'from empleado as a, puestos as b, cfp10201 as c ' ||   
'where numsoc >= ' || ''' || nLlave ''' || ' and b.cvePuesto = ' ||            
'case ' ||                   'when a.cvePuesto2 > ''0000'' then a.cvePuesto2 ' 
||                        'else a.cvePuesto ' ||                   'end and 
c.cfbrch = a.numsuc ' ||   'order by numsoc fetch first ' || nNumRegistros || ' 
rows only';   prepare nConsulta from vConsulta;    open c1;       Saludos 
cordiales; José Luis Ochoa Lara
De: [email protected]
Para: [email protected]
Cc: 
Fecha: Fri, 15 Apr 2016 12:56:53 -0500
Asunto: Usando cláusula "fetch first n ROWS" en sql de DB2



> Hola a todos,>  >  Soy nuevo en esta comunidad. Pongo a consideración mi 
> primer pregunta: >  Estoy desarrollando un procedimiento en SQL en iSeries 
> release 6.1, dentro del cual manejo un cursor, el cual tiene una consulta que 
> utiliza la cláusula FETCH FIRST n ROWS ONLY. El número de renglones que 
> quiero que me devuelva el cursor se lo paso como parámetro al procedimiento, 
> y la consulta queda así:    declare c1 cursor for   select idEmpleado, 
> numsoc, replace( replace( replace( replace(             replace( trim( trim( 
> trim(paterno) || ' ' ||             trim(materno) ) || ' ' || trim( 
> trim(nombre) || ' ' ||                trim(nombre2) ) ), ',', '' ), chr(34), 
> '' ), chr(39), '' ),             ';', '' ), ':', '' ) as nombre, cfbrnm, 
> b.puesto,           tipoRelacionado, declarativa   from empleado as a, 
> puestos as b, cfp10201 as c   where numsoc >= nLlave and b.cvePuesto =        
>      case                when a.cvePuesto2 > '0000' then a.cvePuesto2         
>        else a.cvePuesto             end and c.cfbrch = a.numsuc    order by 
> numsoc fetch first nNumRegistros rows only;  Al crear el procedimiento me 
> marca un error en la variable nNumRegistros. Tengo por fuerza que ponerle una 
> constante "fetch first 20 rows only"  para que me compile, pero mi necesidad 
> es que el número de registros a devolver en el cursor sea variable.> Mucho 
> agradeceré algún tip para resolver el problema. >  >  >  > Saludos 
> cordiales;>  > José Luis > de León, Guanajuato, México >  



____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a