je vous présente d'abord mon problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE PROCEDURE transaction_of_delete(l_partition IN VARCHAR2,l_commit_freq IN NUMBER) IS
TYPE c_partition_type_in IS REF CURSOR;
c_partition_in c_partition_type_in;
l_statement VARCHAR2(400);
nbr NUMBER;
BEGIN
l_statement := 'SELECT ROWNUM FROM smf_closing_prices';
OPEN c_partition_in FOR l_statement;
fetch c_partition_in into nbr;
close c_partition_in;
END;
Ceci fonctionne sans prob!
Mais j'aimerais le fetcher dans une collection:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE PROCEDURE transaction_of_delete(l_partition IN VARCHAR2,l_commit_freq IN NUMBER) IS
TYPE c_partition_type_in IS REF CURSOR;
c_partition_in c_partition_type_in;
l_statement VARCHAR2(400);
TYPE TYP_CLOSING_PRICES IS TABLE OF NUMBER;
closing_prices_list TYP_CLOSING_PRICES;
BEGIN
l_statement := 'SELECT ROWNUM FROM smf_closing_prices partition('||l_partition||')';
OPEN c_partition_in FOR l_statement;
fetch c_partition_in bulk collect into closing_prices_list;
close c_partition_in;
END;
Ceci me provoque une erreur à l'éxecution quand je lance la procédure!
invalid cursor! comprends pas du tout, alors que j'ai regardé plusieurs documents!

alors jai essayé sans cursor :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE OR REPLACE PROCEDURE transaction_of_delete(l_partition IN VARCHAR2,l_commit_freq IN NUMBER) IS
l_statement VARCHAR2(400);
TYPE TYP_CLOSING_PRICES IS TABLE OF NUMBER;
closing_prices_list TYP_CLOSING_PRICES;
BEGIN
l_statement := 'select rownum from smf_closing_prices';
execute immediate l_statement bulk collect into closing_prices_list;
END;
Et ceci me provoque une erreur à la compilation au niveau de l'execute immediate!
bref je ne sais plus koi faire!
est ce qqun saurait m'éclairer merci!