Mysql存储过程列类型参考

jen*_*ile 8 mysql stored-procedures

在PL/SQL中,您可以使用TABLE.COLUMN_NAME%类型语法引用过程变量和参数的表列类型.这使代码维护更容易.在mysql存储过程语言中是否有相当于这个?

哪个人可能需要这个?请考虑以下insert语句:

INSERT INTO NL_LIST (NAME, EMAIL)
    SELECT
        NAME,
        normalizeEmail(EMAIL) 
    FROM
        RAW_NL_LIST;
Run Code Online (Sandbox Code Playgroud)

为此,我希望能够(大致)以下列方式定义normalizeEmail:

CREATE FUNCTION normalizeEmail(email RAW_NL_LIST.EMAIL%type)
RETURNS NL_LIST.EMAIL%type
BEGIN
... implementation here
END;
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 4

不可以,您无法自动将表定义中使用的类型与存储过程中的类型进行匹配。您必须自己查找表定义并输入正确的类型。

请参阅:http ://dev.mysql.com/doc/refman/5.6/en/create-procedure.html

这里说:

CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body

CREATE
    [DEFINER = { user | CURRENT_USER }]
    FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body

proc_parameter:
    [ IN | OUT | INOUT ] param_name type

func_parameter:
    param_name type

type:
    Any valid MySQL data type    <<<-- no special magic allowed

....
Run Code Online (Sandbox Code Playgroud)