2014-05-15 3 views
0

J'ai une application dans laquelle l'utilisateur entre les entrées dans un format séparé par des virgules de l'interface utilisateur et je dois capturer ces valeurs et les insérer dans une base de données sous forme d'enregistrements. Par exemple, l'utilisateur entre ('p1, p2, p3, p4) et il sera stocké dans le tableau commeStockage des valeurs séparées par des virgules dans une table

ID Value 
1 p1 
2 p2 
3 p3 
4 p4 

je dois mettre en œuvre cette utilisation du tableau associatif?

+0

Si la colonne ID est juste une séquence, vous n'avez pas besoin d'un tableau associatif pour y parvenir. – EkoostikMartin

+0

duplication possible de [Comment diviser le mieux les chaînes csv dans Oracle 9i] (http://stackoverflow.com/questions/1089508/how-to-best-split-csv-strings-in-oracle-9i) – abhi

+1

Êtes-vous * * nous demander ** si * vous * devez utiliser un tableau associatif, ou ** nous dire ** que vous * devez * utiliser un tableau associatif? –

Répondre

0

Vous pouvez créer un type de tableau de varchar2(100):

CREATE OR REPLACE TYPE t_my_list AS TABLE OF VARCHAR2(100); 

Ensuite, créez une fonction renvoyant ce type à partir d'une entrée p_list chaîne 'valsepvalsepvalsep' (c2t pour char tableau):

CREATE OR REPLACE 
FUNCTION c2t(p_sep in Varchar2, p_list IN VARCHAR2) 
    RETURN t_my_list 
AS 
    l_string VARCHAR2(32767) := p_list || p_sep; 
    l_sep_index PLS_INTEGER; 
    l_index PLS_INTEGER := 1; 
    l_tab t_my_list  := t_my_list(); 
BEGIN 
    LOOP 
    l_sep_index := INSTR(l_string, p_sep, l_index); 
    EXIT 
    WHEN l_sep_index = 0; 
    l_tab.EXTEND; 
    l_tab(l_tab.COUNT) := TRIM(SUBSTR(l_string,l_index,l_sep_index - l_index)); 
    l_index   := l_sep_index + 1; 
    END LOOP; 
    RETURN l_tab; 
END c2t; 
/

ici est comment vous appelez ce qui précède:

select cto_table(',', 'p1,p2,p3') from dual; 

Cela vous donne une "collection". Vous faites une table avec avec la fonction intégrée comme celui-ci table(..):

select rownum, column_value from table(c2t(',', 'p1,p2,p3')) ; 
Questions connexes