j'ai une procédure qui me retourne un curseur,
y'a t'il une commande pour connaitre le nombre de ligne de mon curseur sans avoir à faire un FETCH ou apres avoir fait un PRINT du curseur dans fichier TXT
Merci
j'ai une procédure qui me retourne un curseur,
y'a t'il une commande pour connaitre le nombre de ligne de mon curseur sans avoir à faire un FETCH ou apres avoir fait un PRINT du curseur dans fichier TXT
Merci
Bonjour,
essaie curseur%rowcount :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SQL> declare 2 cursor csr is select ename from emp; 3 v_ename emp.ename%type; 4 begin 5 open csr; 6 loop 7 fetch csr into v_ename; 8 exit when csr%notfound; 9 end loop; 10 dbms_output.put_line('Total :'||csr%rowcount); 11 close csr; 12 end; 13 / Total :14 PL/SQL procedure successfully completed.
bulk collect
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SQL> create or replace type type1 as table of varchar2(50); 2 / Type created. SQL> declare 2 t1 type1; 3 begin 4 select ename 5 bulk collect into t1 6 from emp; 7 dbms_output.put_line('Total :' ||sql%rowcount); 8 end; 9 / Total :14 PL/SQL procedure successfully completed.
Merci pour ta réponse, mais malheureusement je ne peux pas utiliser rowcount car ça m’oblige de faire un FETCH sur le curseur, et dans le deuxième cas je ne vois pas comment utiliser le bulk collect dans mon curseur
Un COUNT m’oblige à avoir deux requêtes, et pour les maintenances, évolutions ou perfs, c’est difficiles à gérer surtout que c’est de grosse requêtes.
Mais on faisons un Print du CURSEUR dans fichier TXT, il n’ya pas qlq chose qui me retourne le nombre de ligne
Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 SET NEWPAGE 0 SET SPACE 0 SET PAGESIZE 0 set linesize 2500 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET MARKUP HTML OFF SET ESCAPE \ Whenever sqlerror Exit Failure WHENEVER SQLERROR EXIT SQL.SQLCODE; --------------------------------------------------------------------------------------------------------------- -- Génération des fichiers plats ENTREPRISE.TXT --------------------------------------------------------------------------------------------------------------- var p_curseur_ENTETE refcursor; var p_curseur refcursor; var p_curseur_FIN refcursor; var p_date DATE; COLUMN l_file new_value l_file p_date = &1 execute PCK_EXPORT_SIERA_BASECO.PRC_ENTETE_FILE( '&1' , 'ENT', :p_curseur_ENTETE); execute PCK_EXPORT_SIERA_BASECO.PRC_EXPORT_ENTREPRISE_BIS ( '&1' , :p_curseur); SELECT 'base_commerciale_entreprise_'||to_char( to_date('&1') , 'YYYYMMDD' )||'.txt' l_file FROM dual; Spool &l_file print p_curseur_ENTETE print p_curseur spool off
L'option feedback permet l'affichage du nombre de lignes, donc au lieu depasse à
Code : Sélectionner tout - Visualiser dans une fenêtre à part set feeedback off
Code : Sélectionner tout - Visualiser dans une fenêtre à part set feeedback on
Partager