[url]http://blog.sina.com.cn/s/blog_6a3922be0101a72t.html[/url]
CREATE OR REPLACE FUNCTION SMALITOBLG(
SMALLMONEY VARCHAR2
)
RETURN VARCHAR2 IS
BIGWRITE VARCHAR2(54); -- 用于负担会答谢的钱数
BIGNUM VARCHAR(2); -- 用于存放每一个阿拉伯数字对应的汉子
RMB VARCHAR(2); -- 用于存放人民币单位
MONEYPLACE NUMBER; -- 用于确定人民币的精度,最多只能精确到分
DOTPLACE NUMBER; -- 确定小数点的位置
MONEYNUM NUMBER; -- 人民币的位置
MYEXCEPTION EXCEPTION; -- 自定义异常
BEGIN
DOTPLACE := INSTR(SMALLMONEY,'.');
IF(LENGTH(SMALLMONEY) > 14) OR ((LENGTH(SMALLMONEY) > 12) AND (DOTPLACE = 0)) THEN
RAISE MYEXCEPTION;
END IF;
IF DOTPLACE = 0 THEN
MONEYPLACE := 0;
ELSE
MONEYPLACE := DOTPLACE - LENGTH(SMALLMONEY);
END IF;
FOR MONEYNUM IN REVERSE 1..LENGTH(SMALLMONEY) LOOP
IF MONEYNUM <> DOTPLACE THEN
CASE SUBST
CREATE OR REPLACE FUNCTION SMALITOBLG(
SMALLMONEY VARCHAR2
)
RETURN VARCHAR2 IS
BIGWRITE VARCHAR2(54); -- 用于负担会答谢的钱数
BIGNUM VARCHAR(2); -- 用于存放每一个阿拉伯数字对应的汉子
RMB VARCHAR(2); -- 用于存放人民币单位
MONEYPLACE NUMBER; -- 用于确定人民币的精度,最多只能精确到分
DOTPLACE NUMBER; -- 确定小数点的位置
MONEYNUM NUMBER; -- 人民币的位置
MYEXCEPTION EXCEPTION; -- 自定义异常
BEGIN
DOTPLACE := INSTR(SMALLMONEY,'.');
IF(LENGTH(SMALLMONEY) > 14) OR ((LENGTH(SMALLMONEY) > 12) AND (DOTPLACE = 0)) THEN
RAISE MYEXCEPTION;
END IF;
IF DOTPLACE = 0 THEN
MONEYPLACE := 0;
ELSE
MONEYPLACE := DOTPLACE - LENGTH(SMALLMONEY);
END IF;
FOR MONEYNUM IN REVERSE 1..LENGTH(SMALLMONEY) LOOP
IF MONEYNUM <> DOTPLACE THEN
CASE SUBST