Le fractionnement séparées par des virgules chaîne dans une PL/SQL stockées proc
J'ai CSV chaîne 100.01,200.02,300.03 qui j'ai besoin de passer à une procédure stockée PL/SQL Oracle.
À l'intérieur du proc,j'ai besoin d'insérer ces valeurs dans un certain Nombre de colonnes dans le tableau.
Pour cela, j'ai obtenu une démarche de travail à partir d'ici:
Comment mieux split csv chaînes dans oracle 9i
[2) à l'Aide de SQL connect par niveau.].
Maintenant,j'ai une autre exigence.
J'ai besoin de passer 2 CSV cordes[de longueur égale] comme entrée PL/SQL stockées proc.Et, j'ai besoin de briser cette chaîne et insérez chaque valeur de deux CSV cordes en deux colonnes dans le tableau.Pourriez-vous s'il vous plaît laissez-moi savoir comment vous y prendre?
Exemple de CSV entrées:
mystring varchar2(2000):='0.75, 0.64, 0.56, 0.45';
monmontant varchar2(2000):= '0.25, 0.5, 0.65, 0.8';
myString valeurs irait dans la Colonne A et monmontant valeurs dans la Colonne B du tableau.
Pourriez-vous s'il vous plaît laissez-moi savoir comment atteindre cet objectif?
Grâce.
- Découvrez nuijten.blogspot.com/2009/07/... - utilisation d'expressions Régulières dans Oracle
Vous devez vous connecter pour publier un commentaire.
Ceci devrait faire ce que vous cherchez.. Il suppose que votre liste sera toujours seulement des chiffres. Si ce n'est pas le cas, il suffit de modifier les références à DBMS_SQL.NUMBER_TABLE à un type de table qui fonctionne pour toutes vos données:
Ici est une bonne solution:
Source:
CSV - valeurs séparées par des virgules et PL/SQL(lien n'est plus valide)SELECT FROM
un PL/SQL de type tableau déclaré dans un package. Si vous avez déclaré un type de table dans le schéma de niveau, vous pouvez sélectionner à partir, si vous le lancez avec laTABLE()
de l'opérateur.- Je utiliser apex_util.string_to_table analyser les chaînes, mais vous pouvez utiliser un autre analyseur si vous le souhaitez. Ensuite, vous pouvez insérer les données comme dans cet exemple:
Apex_util est disponible à partir d'Oracle 10G à partir. Avant cela, il a été appelé htmldb_util et n'a pas installé par défaut. Si vous ne pouvez utiliser que vous pouvez utiliser la chaîne de l'analyseur j'ai écrit il y a plusieurs années et posté ici.
Je ne sais pas si cela correspond à votre version oracle. Sur mon 10g je peux utiliser le pipeline de la table de fonctions:
Beaucoup de bonnes solutions ont été déjà fournis. Toutefois, s'il le texte est présenté dans un très simple format délimité par des virgules ou similaires, et que la vitesse est d'importance, alors j'ai pour vous une solution avec un
TABLE
fonction (en PL/SQL). J'ai également fourni un aperçu de quelques-uns d'autres solutions.Pour en savoir plus sur la L'Entrée de Blog sur l'Analyse d'un fichier CSV en plusieurs colonnes.
Comme pour le
connect by
cas d'utilisation, cette approche devrait fonctionner pour vous: