Kod: Tümünü seç
CREATE PROCEDURE P_STRING_REPLACE (
STR VARCHAR(500) CHARACTER SET WIN1254,
OLD_STR VARCHAR(50) CHARACTER SET WIN1254,
NEW_STR VARCHAR(50) CHARACTER SET WIN1254)
RETURNS (
SONUC_STR VARCHAR(500))
AS
DECLARE VARIABLE TMP_BEG VARCHAR(50);
DECLARE VARIABLE TMP_END VARCHAR(50);
DECLARE VARIABLE P INTEGER;
BEGIN
--EGER ESKİ VE YENİ STRİNGLER AYNI İSE CIK
IF (OLD_STR=NEW_STR) THEN
BEGIN
SONUC_STR=STR;
SUSPEND;
EXIT;
END
--STRING ARANIR
SELECT DONEN FROM POS(:OLD_STR,:STR) INTO :P;
WHILE(P <> 0) DO
BEGIN
--BULUNAN YERE VE SONRASINA KADAR SAKLANIR
TMP_BEG= SUBSTR(:STR,1,:P-1 );
TMP_END= SUBSTR(:STR,P+STRLEN(:OLD_STR),STRLEN(:STR) );
--
STR=TMP_BEG||NEW_STR||TMP_END;
--SONUC_STR= STR;
--ESKI STRING TEKRAR ARANIR
SELECT DONEN FROM POS(:OLD_STR,:STR) INTO :P;
END
SONUC_STR=STR;
SUSPEND;
END