私は、複雑なPL/SQLプロシージャをコーディングして、パラメータから決められた期間の給与明細に関する画面情報を表示し、各従業員に関する情報を表示するための最初のループと、給与に関する情報を表示するための2番目のループを作成します両方のループは私が表示できるように情報を表示しません。Oracle - このPLSQLネストループを改善して情報を取得する方法を教えてください。
- 最初のカーソルは、第二のカーソルが給与の概念(連邦税、社会保障、控除など)に関する情報を取得従業員に関する情報(EMP_ID、姓、名、など)
- を取得
FOR i IN (SELECT a.legajo, a.apellido, a.nombre,
formatear_cuit_cuil(a.cuil) CUIL, a.fecha_alta,
b.numero, b.fecha_liquidacion, b.sueldo_basico,
b.codigo_periodo_liq
FROM empleados a
JOIN liquidaciones b
ON (a.legajo = b.legajo_empleado)
WHERE b.fecha_liquidacion = v_fecha_liq
ORDER BY a.apellido, a.nombre ASC)
LOOP
FOR j IN (SELECT b.descripcion CONCEPTO, a.cantidad,
(CASE
WHEN c.descripcion LIKE 'HABER' THEN
a.importe
ELSE
NULL
END
) haberes,
(CASE
WHEN c.descripcion = 'ANTICIPO'
OR c.descripcion = 'RETENCION' THEN
a.importe
ELSE
NULL
END
) retenciones
FROM detalles_liquidaciones a
JOIN conceptos b
ON (a.codigo_concepto = b.codigo)
JOIN tipos_conceptos c
ON (b.codigo_tipo = c.codigo)
WHERE a.numero_liquidacion = i.numero
AND c.descripcion IN ('HABER', 'RETENCION', 'ANTICIPO'))
LOOP
DBMS_OUTPUT.PUT_LINE(
'Empleado: ' || LPAD(i.legajo, 4, 0) || ' - ' ||
UPPER(i.apellido) || ', ' || UPPER(i.nombre));
DBMS_OUTPUT.PUT_LINE('CUIL: ' || i.cuil);
DBMS_OUTPUT.PUT_LINE(
RPAD('Concepto', LENGTH(j.concepto), ' ') ||
' Haberes' || ' Retenciones');
DBMS_OUTPUT.PUT_LINE(j.concepto);
しかし、給与の概念ごとに同じ従業員の情報が表示されます。あなたは何か考えていますか?おかげ
あなたはdbms_outputを使用して画面にデータを表示しますか? –
私の投稿を編集していただきありがとうございます。はい、最後に問題を修正できましたが、最初のスクリーンショットと同じように、コードを編集して(DBMS_OUTPUTを使用して)画面に表示したいと思います。私は新しい質問を加えるべきだと思う。あなたの助けに感謝ウィリアム。 –