带有MYSQL参数的存储过程

时间:2019-01-17 14:30:08

标签: mysql

我对存储过程有疑问:

创建一个名为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中编写代码。

非常感谢您的帮助。

亨利

3 个答案:

答案 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 ;