Estou querendo criar uma função de extenso no MySQL, mas sem idéia.
Alguém pode me dar uma luz como se criam funções/variáveis/etc.?
Pode ser uma função de somar A + B pra começar, criando a variável C pra retorno.

Moderador: Moderadores
delimiter //
CREATE FUNCTION ze_extenso( nValor DECIMAL )
BEGIN
DECLARE ctxt VARCHAR;
ctxt = CONCAT( nvalor,'');
End
//
CREATE function ze_extenso ( nValue decimal(10,2) )
RETURNS VARCHAR(500) DETERMINISTIC
RETURN CONCAT( 'Hello ', nValue, ' !' );
RETURN CONCAT_WS( ' ', 'Hello', nValue, '!' )
cTxt VARCHAR(500);
set cTxt := CONCAT_WS( ' ', 'Hello', nValue, cTxt, '!' );
RETURN cTxt
DROP FUNCTION if exists ze_extenso;
SET delimiter $$
create function ze_extenso( nValue DECIMAL(15,2) )
RETURNS VARCHAR(500) DETERMINISTIC
BEGIN
DECLARE ctxt VARCHAR(500);
SET ctxt = CONCAT( 'Hello ', nValue, cTxt, ' !' );
RETURN cTxt
end$$
DROP FUNCTION if exists ze_extenso;
delimiter $$
create function ze_extenso( nValue DECIMAL(15,2) )
RETURNS VARCHAR(500) DETERMINISTIC
BEGIN
DECLARE ctxt VARCHAR(500);
SET ctxt = CONCAT( 'Hello ', nValue, ' !' );
RETURN cTxt;
END
$$
delimiter ;
DROP FUNCTION if exists ze_extenso;
delimiter $$
create function ze_extenso( nValor DECIMAL(15,2) )
RETURNS VARCHAR(500) DETERMINISTIC
BEGIN
DECLARE cTxt VARCHAR(500);
SET cTxt := '';
if nvalor != 0 then
SET cTxt := CONCAT( ' ', 'extenso', LPAD( Ceil(nValor * 100 ), 15, '0' ), '!' );
end if;
RETURN cTxt;
END
$$
delimiter ;
CREATE DEFINER=`jpatecnologia`@`%` FUNCTION `ze_extenso`(
`nValue` DECIMAL(15,2)
)
RETURNS varchar(500) CHARSET latin1
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
RETURN CONCAT_WS( ' ', 'Hello', nValue, '!' )
DROP FUNCTION if exists ze_extensoUnidade;
delimiter $$
create function ze_extensoUnidade( nValor INT )
RETURNS VARCHAR(500) DETERMINISTIC
BEGIN
DECLARE cTxt VARCHAR(500);
SET cTxt := (
case
when nvalor = 1 then 'HUM'
when nvalor = 2 then 'dois'
when nvalor = 3 then 'tres'
when nvalor = 4 then 'quatro'
when nvalor = 5 then 'cinco'
when nvalor = 6 then 'seis'
when nvalor = 7 then 'sete'
when nvalor = 8 then 'oito'
when nvalor = 9 then 'nove'
when nvalor = 10 then 'dez'
when nvalor = 11 then 'onze'
when nvalor = 12 then 'doze'
when nvalor = 13 then 'treze'
when nvalor = 14 then 'quatorze'
when nvalor = 15 then 'quinze'
when nvalor = 16 then 'dezesseis'
when nvalor = 17 then 'dezessete'
when nvalor = 18 then 'dezoito'
when nvalor = 19 then 'dezenove'
ELSE ''
END );
RETURN cTxt;
END
$$
delimiter ;
DROP FUNCTION if exists ze_extensoDezena;
delimiter $$
create function ze_extensodezena( nValor INT )
RETURNS VARCHAR(500) DETERMINISTIC
BEGIN
DECLARE cTxt VARCHAR(500);
DECLARE ndezena INT;
DECLARE nunidade INT;
SET ctxt = '';
if nvalor > 0 then
if nvalor < 20 then
set cTxt = ze_ExtensoUnidade( nValor );
else
SET ndezena = floor( nvalor / 10 );
SET nunidade = nvalor - ( ndezena * 10 );
set cTxt = (
case
when ndezena = 2 then 'VINTE'
when ndezena = 3 then 'TRINTA'
when ndezena = 4 then 'QUARENTA'
when ndezena = 5 then 'CINQUENTA'
when ndezena = 6 then 'SESSENTA'
when ndezena = 7 then 'SETENTA'
when ndezena = 8 then 'OITENTA'
when ndezena = 9 then 'NOVENTA'
ELSE ''
END );
if nunidade != 0 then
set cTxt = CONCAT( ctxt, ' E ', ze_extensounidade( nUnidade ) );
END if ;
END if;
END if ;
RETURN cTxt;
END
$$
delimiter ;
CREATE DEFINER=`jpatecnologia`@`%` FUNCTION `ze_extensocentena`(
`nValor` INT
)
RETURNS varchar(500) CHARSET latin1
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE cTxt VARCHAR(500);
DECLARE ncentena INT;
DECLARE ndezena INT;
SET ctxt = '';
if nvalor > 0 then
if nvalor = 100 then
set cTxt = 'CEM';
else
SET ncentena = floor( nvalor / 100 );
SET ndezena = nvalor - ( ncentena * 100 );
set cTxt = (
case
when ncentena = 1 then 'CENTO'
when nCENTENA = 2 then 'DUZENTOS'
when nCENTENA = 3 then 'TREZENTOS'
when nCENTENA = 4 then 'QUATROCENTOS'
when nCENTENA = 5 then 'QUINHENTOS'
when nCENTENA = 6 then 'SEISSENTOS'
when nCENTENA = 7 then 'SETECENTOS'
when nCENTENA = 8 then 'OITOCENTOS'
when nCENTENA = 9 then 'NOVECENTOS'
ELSE ''
END );
if nDEZENA != 0 then
set cTxt = CONCAT( ctxt, IF( NCENTENA = 0, '', ' e ' ), ze_extensoDEZENA( nDEZENA ) );
END if ;
END if;
END if ;
RETURN cTxt;
END
rs := conexao:Execute( "SELECT ze_Extenso( " + Str( Valor ) + " ) AS EXTENSO" )
? rs:Fields( "EXTENSO" ):Value
rs:Close()
Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes