我对存储过程有疑问:
创建一个名为format_currency
的存储过程,该存储过程接受一个字符和一个双数。它将返回VARCHAR(32)
,其前面带有符号,后跟数字至小数点后两位。
例如,format_currency('$', 123.4)
应该返回$ 123.40
这是我的代码:
CREATE OR REPLACE PROCEDURE format_currency(IN c VARCHAR2, IN n DOUBLE(9,2))
AS
BEGIN
SELECT CONCAT(c,',' n);
END;
它不起作用,我不知道如何在BEGIN和END中编写代码。
非常感谢您的帮助。
亨利
答案 0 :(得分:0)
我建议使用功能代替程序: 代码:
DELIMITER $$
DROP FUNCTION IF EXISTS test_f$$
CREATE FUNCTION test_f(a varchar(22),b double(9,2)) returns varchar(64)
BEGIN
SET @RET = (select concat(a,b));
return @RET;
END$$
DELIMITER ;
mysql> select test_f('$',123);
+-----------------+
| test_f('$',123) |
+-----------------+
| $123.00 |
+-----------------+
1 row in set (0.10 sec)
mysql>
答案 1 :(得分:0)
DELIMITER\\
CREATE PROCEDURE format_currency (a CHAR, b DOUBLE(9,2))
BEGIN
declare ret VARCHAR(32);
set @ret = (SELECT CONCAT(a,b));
select @ret;
END
DELIMITER\\
call format_currency('$',123);
答案 2 :(得分:0)
我有一个类似的问题,其他人回答的问题在MySQL中对我没有任何帮助。这是一个工作解决方案,具有两个参数“ SIGN”和“ MONEY”,并创建一个变量“ NEWRESULT”,您将其delcare设置为0,然后将其设置为“ SIGN”和“ MONEY”的连接。
DELIMITER //
CREATE PROCEDURE format_currency`enter code here`
(IN SIGN char(1),IN MONEY double(9,2))
BEGIN
declare NEWRESULT char(8);
set NEWRESULT=0;
SET NEWRESULT=(SELECT CONCAT(SIGN,MONEY));
SELECT NEWRESULT;
END//
DELIMITER ;