Справочник по типу столбца хранимых процедур Mysql - PullRequest
8 голосов
/ 26 января 2011

В PL / SQL вы можете ссылаться на тип столбца таблицы для переменных и аргументов процедуры, используя синтаксис TABLE.COLUMN_NAME% type . Это делает обслуживание кода намного проще. Есть ли эквивалент этого в языке хранимых процедур mysql?

Где это может понадобиться? Рассмотрим следующий оператор вставки:

INSERT INTO NL_LIST (NAME, EMAIL)
    SELECT
        NAME,
        normalizeEmail(EMAIL) 
    FROM
        RAW_NL_LIST;

Для этого я хотел бы иметь возможность определить normalizeEmail (примерно) следующим образом:

CREATE FUNCTION normalizeEmail(email RAW_NL_LIST.EMAIL%type)
RETURNS NL_LIST.EMAIL%type
BEGIN
... implementation here
END;

1 Ответ

4 голосов
/ 12 октября 2011

Нет, вы не можете автоматически сопоставлять тип, используемый в определении таблицы, с типом в хранимой процедуре.Вам придется самостоятельно найти определение таблицы и ввести правильный тип.

См .: 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

....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...