Bueno la solucion de Victor Hugo me gusta porque no genera tanto codigo, ahora que voy viendo el problema me causo curiosidad y escribi un procedimiento que hace lo que quieres enviando dos parametros. Lo acabo de probar y me funciona normal.
CREATE PROCEDURE charCounter(IN cadena CHAR(30), IN matcher CHAR(1))
BEGIN
DECLARE nParamCount INT(3) DEFAULT 0;
DECLARE nActPos INT(3) DEFAULT 1;
DECLARE nCounter INT(3) DEFAULT 0;
DECLARE cChar CHAR(1);
declare cMatch CHAR(1);
SET nParamCount = CHAR_LENGTH(cadena);
SET cMatch = TRIM(LOWER(matcher));
SET nCounter = 0;
REPEAT
SET cChar = TRIM(LOWER(SUBSTRING(cadena,nActPos,1)));
IF STRCMP(cChar,cMatch) = 0 THEN
SET nCounter = nCounter + 1;
END IF;
SET nActPos = nActPos + 1;
UNTIL nActPos = nParamCount +1
END REPEAT;
SELECT nCounter;
END
//
No te olvides de establecer un delimitador al principio y cambiarlo al final.
Delimeter // (esto es antes de escribir el procedimiento en el servidor)
Delimiter ; (esto es al finalizar de escribir el procedimiento en el servidor)
Para llamarlo desde Fox.
lcCaracter = 'Magdalena'
lcMatchChar = 'a'
SQLEXEC(P1,"Call charcounter(?lcCaracter,?lcMatchChar)",'cursor')
browse cursor
Espero que te ayude.
--
Thank you for everything... :)
---- Christian Torres ----
* * * * Venezuela * * * *