Procedure funktioniert nicht

rrmartin

Neuer Benutzer
Beiträge
3
Hallo,

meine Procedure funktioniert einfach nicht... ich denke mal, dass ich einfach ne Kleinigkeit übersehe. Kann mir jemand einen Tipp geben?

Ich möchte, dass die Procedure folgendes macht:

- suche in allen Einträgen nach dem Teilstring " x " und entferne ihn. Für x soll durch ein Loop 100 bis 0 eingesetzt werden, also 100 Durchläufe pro Tabelleneintrag. Der Update Befehl für sich ohne die Variable und Loop funktioniert. Nur in der Variable/Loop-Konstellation halt nicht.

Vielen Dank für jede Hilfe!!
Gruß

Code:
CREATE DEFINER=`comp`@`%` PROCEDURE `generator`()
BEGIN

declare x INT;

SET x=10;

WHILE x>0 DO
UPDATE comp.data
SET key = REPLACE(key, CONCAT(' ', x,' '),' ')
WHERE key LIKE CONCAT('% ', x, ' %');

SET  x = x - 1;
END WHILE;


END
 
Werbung:
Datentypen-Problem?

Sorry, ich nix MySQL, könnt mir aber sowas vorstellen. Aber warum überhaupt das in einer Schleife? Zuviel Rechenpower übrig?
 
Int müsste doch eigentlich passen für Zahlen zwischen 0-100.

Loop, weil ich ja z.B. " 4 " oder " 33 " heraushaben möchten aus den String-Einträgen der Spalte

Gruß
 
Werbung:
Int müsste doch eigentlich passen für Zahlen zwischen 0-100.

Loop, weil ich ja z.B. " 4 " oder " 33 " heraushaben möchten aus den String-Einträgen der Spalte

Wie Du selber merkst, sind das String-Felder. Und es geht auch ohne Schleife, z.B. so:

Code:
test=# create table rrmartin as select s as id, 'bla ' || s::text || ' fasel' as val from generate_series(1, 10) s;
SELECT 10
test=*# select * from rrmartin ;
 id |  val   
----+--------------
  1 | bla 1 fasel
  2 | bla 2 fasel
  3 | bla 3 fasel
  4 | bla 4 fasel
  5 | bla 5 fasel
  6 | bla 6 fasel
  7 | bla 7 fasel
  8 | bla 8 fasel
  9 | bla 9 fasel
 10 | bla 10 fasel
(10 Zeilen)

Und die ' x ' da überall rauszubekommen reicht ein Update:

Code:
test=*# update rrmartin set val = regexp_replace(val, ' \d+ ','');
UPDATE 10
test=*# select * from rrmartin ;
 id |  val   
----+----------
  1 | blafasel
  2 | blafasel
  3 | blafasel
  4 | blafasel
  5 | blafasel
  6 | blafasel
  7 | blafasel
  8 | blafasel
  9 | blafasel
 10 | blafasel
(10 Zeilen)

PostgreSQL, könnte durchaus ähnlich in MySQL gehen. Hrm. regexp_replace() gibt es wohl nicht...
 
Zurück
Oben