2011-01-26 112 views
6

在PL/SQL中,可以使用TABLE.COLUMN_NAME%類型語法引用過程變量和參數的表列類型。這使代碼維護更容易。在mysql存儲過程語言中是否有這樣的等價物?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; 
+0

在什麼情況下,你在表中引用列?你能給出一個查詢的例子,你會這樣做嗎? – TehShrike 2011-01-26 16:29:46

回答

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 

....