PL/SQL Curseur de la boucle
Je crois que j'ai besoin d'un curseur pour boucle pour parcourir le street1 colonne du tableau test_data. J'ai un programme qui a besoin de tester chaque ligne de la table.
C'est ce que j'ai à ce jour:
cursor c1 is
street1
from test_data
Begin
If Instr(street1, ‘Cnr’, 1) >= 1;
Then
Newstreetname := Substr(street1, Instr(street1, ‘Cnr’, 1)+3);
Else if
Instr(street1, ‘PO Box’, 1) >= 1;
Then
Newstreetname:= Substr(street1, Instr(street1, ‘PO Box’, 1));
Else if
REGEXP_ Instr (street1, [\d], 1) = 0;
Then
Newstreetname:= street1;
Else if
REGEXP_ Instr (street1, [\d], 1) >= 1;
Then
Newstreetnumber:= regexp_substr(street1, '\d+(\s|\/)(\d+)?-?(\d+)?(\w {1})?');
Newstreetname:= regexp_substr(street1, '(\w+\s\w+)$');
End
OriginalL'auteur user1332821 | 2012-04-16
Vous devez vous connecter pour publier un commentaire.
*1. Vous avez besoin d'un SELECT et un point-virgule dans la définition de curseur
*2. Vous pouvez ajouter une BOUCLE sur le curseur
Par exemple:
Vous pouvez, sinon, éviter de manière explicite de la définition de curseur entièrement, par exemple:
*3. Votre SI les instructions ne peuvent pas comprendre un point - virgule, par exemple:
*4. [edit] si vous souhaitez mettre à jour votre table, les colonnes
newstreetnumber
etnewstreetname
- dans ce cas, vous pourriez faire quelque chose comme ceci:Noter, cependant, que ce ne sera pas effectuer bien pour les gros volumes, et je préfère tout faire en une seule instruction de mise à JOUR.
OriginalL'auteur Jeffrey Kemp
Comme Jeffrey dit Kemp cela peut être fait en une seule mise à jour statemant:
OriginalL'auteur A.B.Cade