SQL Anywhere, also known as Adaptive Server Anywhere, does not provide support to display values as currency.
So, I had to write my own function. Since I’m copying my SQL from Oracle, I want to easily replace the TO_CHAR( amount, ‘$9,999.99′) expressions. So, this function is named TO_MONEY() and has the same signature as TO_CHAR()’s. I just replace CHAR with MONEY in SQL Anywhere.
TO_MONEY( IN ad_value double, IN as_format varchar(50) DEFAULT ‘$9,999.99′ )
ALTER FUNCTION "dba"."to_money"(
IN ad_value double,
IN as_format varchar(50) DEFAULT '$9,999.99' )
RETURNS varchar(50)
DETERMINISTIC
BEGIN
DECLARE ls_value varchar(50);
DECLARE ls_v varchar(50);
DECLARE len integer;
DECLARE ls_separator char(1);
SET ls_separator = '.';
SET ls_value = CAST( ROUND(ad_value*100,0) AS CHAR );
SET len = LENGTH( ls_value );
SET ls_v = RIGHT( ls_value, 2 );
SET ls_value = SUBSTR( ls_value, 1, len - 2 );
SET len = len - 2;
WHILE len > 3 LOOP
SET ls_v = RIGHT( ls_value, 3 ) + ls_separator + ls_v;
SET ls_value = SUBSTR( ls_value, 1, len - 3 );
SET len = len - 3;
SET ls_separator = ',';
END LOOP;
IF len > 0 THEN
SET ls_v = ls_value + ls_separator + ls_v;
ELSEIF len = 0 THEN
SET ls_v = '0' + ls_separator + ls_v;
END IF;
RETURN '$' + ls_v;
END