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.

