varchar参数为通用长度的函数

时间:2017-02-27 09:46:40

标签: mysql mysql-5.7

我的目标是创建一个MySQL函数,它接受任何字符串并返回它的修改版本。细节不重要,我的问题是签名。我主要是寻求验证这类函数的最佳实践。

这是我想要实现的目标的一种(不可行的)愿景:

CREATE FUNCTION example1(param VARCHAR(n))
RETURNS VARCHAR(n)
BEGIN
    DECLARE result VARCHAR(n);
    SET result = param;
    -- do stuff --
    RETURN result;
END//

使用这个,这种奇怪的互动出现了:

CREATE FUNCTION example1(param VARCHAR(35))
RETURNS VARCHAR(35)
BEGIN
    DECLARE result VARCHAR(35);
    SET result = param;
    -- do stuff --
    RETURN result;
END//

CREATE FUNCTION example2(param VARCHAR(10))
RETURNS VARCHAR(10)
BEGIN
    DECLARE result VARCHAR(10);
    SET result = example1(param);
    -- do stuff --
    RETURN result;
END//

所以example2仍然有用。这似乎varchar长度仅在输入上验证。 然后,为了处理所有字符串,我得到了我的生产函数:

CREATE FUNCTION example1(param VARCHAR(10000))
RETURNS VARCHAR(10000)
BEGIN
    DECLARE result VARCHAR(10000);
    SET result = param;
    -- do stuff --
    RETURN result;
END//

现在该功能的签名搞砸了。它可以工作,我可以设置一个使用它的较小varchar的列 - 但谁会称这样的函数不知道实现细节? 有干净的方法吗?

0 个答案:

没有答案