[英]PL/SQL Oracle dbms_output make evenly output
我试图寻找答案,但没有找到。
即使每篇文章的文章长度不同,我也很乐意让我的 output 均匀。 这就是长度不同时我所拥有的
这是有兴趣的人看的代码
set serverout ON format WORD_WRAPPED;
CREATE OR REPLACE PROCEDURE imprimeFacture IS
CURSOR c_facture IS
SELECT
customer.contact as c_contact,
customer.address as c_address,
customer.city as c_city,
customer.state as C_state,
customer.zip as c_zip,
customer.phone as c_phone,
salesman.nom as s_nom,
salesman.address as s_address,
salesman.city as s_city,
salesman.state as s_state,
salesman.zip as s_zip,
salesman.phone as s_phone,
invoices.ino as i_ino,
invoices.idate as i_date,
detail.qty as d_qty,
parts.descript as p_description,
detail.price as d_prix,
detail.ltotal as d_prixTotal,
(
SELECT
round(SUM(detail.ltotal), 2)
FROM
detail
WHERE
detail.ino = 1054
) AS totalfacture,
(
SELECT
round(SUM(detail.ltotal * 0.15), 2)
FROM
detail
WHERE
detail.ino = 1054
) AS taxe,
(
SELECT
round(SUM(detail.ltotal * 0.15 + detail.ltotal), 2)
FROM
detail
WHERE
detail.ino = 1054
) AS totalavectaxe
FROM
invoices
JOIN detail ON detail.ino = invoices.ino
JOIN parts ON parts.pno = detail.pno
JOIN customer ON customer.cno = invoices.cno
JOIN salesman ON salesman.salesman = invoices.salesman
WHERE
invoices.ino = 1054;
rec_facture c_facture%rowtype;
fictifAvantBoucle NUMBER := 0;
BEGIN
open c_facture;
loop
FETCH c_facture into rec_facture;
exit when c_facture%notfound;
if fictifAvantBoucle = 0 then
dbms_output.put_line('Facture numéro: ' || rec_facture.i_ino || chr(10) || 'Date de facturation (Y/M/D): ' || rec_facture.i_date --section Facture
|| chr(10) || chr(10) || 'Vendu par ' || chr(10) || rec_facture.s_nom || chr(10) || 'Téléphone: ' || rec_facture.s_phone || chr(10) --section vendeur
|| 'Address: ' || rec_facture.s_address || chr(10)
|| 'Ville: ' || rec_facture.s_city || chr(10) || 'État: ' || rec_facture.s_state || chr(10) || 'ZIP: ' || rec_facture.s_zip
|| chr(10) || chr(10) || 'Facturé à ' || chr(10) || rec_facture.c_contact || chr(10) || 'Téléphone: ' || rec_facture.c_phone || chr(10) --section client
|| 'Address: ' || rec_facture.c_address
|| chr(10) || 'Ville: ' || rec_facture.c_city || chr(10) || 'État: ' || rec_facture.c_state || chr(10) || 'ZIP: ' || rec_facture.c_zip || chr(10)
|| chr(10) || '---------------------------------------------------------------------------------------------------------------------------' --section facture Article
|| chr(10) || 'Qty' || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || 'Article' || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9)
|| 'Prix unitaire' || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || 'Montant total' || chr(10)
|| '---------------------------------------------------------------------------------------------------------------------------');
fictifAvantBoucle := fictifAvantBoucle + 1;
end if;
dbms_output.put_line(rec_facture.d_qty || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || rec_facture.p_description || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9)
|| rec_facture.d_prix || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || rec_facture.d_prixTotal);
end loop;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('no data found');
END;
BEGIN
imprimeFacture();
END;
将您的 output 行更改为类似
DBMS_OUTPUT.PUT_LINE(LPAD(rec_facture.d_qty, 3)) || -- d_qty : 3 characters
RPAD(' ', 21) || -- blanks
RPAD(rec_facture.p_description, 29) || -- p_description : 29 chars
LPAD(rec_facture.d_prix, 13) || -- d_prix : 13 chars
RPAD(' ', 23) || -- blanks
LPAD(rec_facture.d_prixTotal, 13)); -- d_prixTotal : 13 chars
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.