2011-01-26 24 views
6

PL/SQL'de, TABLE.COLUMN_NAME% tip sözdizimini kullanarak yordam değişkenleri ve bağımsız değişkenler için bir tablo sütununun türüne başvurabilirsiniz. Bu kod bakımını daha kolay hale getirir. Mysql saklı yordam dilinde bunun bir karşılığı var mı?Mysql Stored Procedures Sütun Tipi Referans

Buna nerede ihtiyaç olabilir?

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

Tablolarda sütunları referans göstermektedir? Bunu yapacağınız bir sorgu örneği verebilir misiniz? – TehShrike

+0

Kavramın açıklaması için http://www.dba-oracle.com/plsql/t_plsql_var_const.htm adresini ziyaret edin. –

+0

Bir yordam yazıyorsanız, bazı değişkenleri bildirmeniz gerekir. Bunlar, sırayla, çoğunlukla tablo sütunlarından girdi alır. Değişkeninizin türünün sağlanan sütun değeriyle uyumlu olmasını sağlamak için, yukarıda belirtilen sözdizimini kullanarak tablo sütununun türünde değişkenler temelini belirtebilirsiniz. Bu, PL/SQL programlanırken en iyi uygulama olarak kabul edilir. Benim sorum mysql'de aynı tür bir şeyin mümkün olup olmadığıydı. –

cevap

4

Hayır, otomatik olarak kullanılan türü eşleşmiyor: i (kabaca) şu şekilde normalizeEmail tanımlayabilme istiyorum Bunun için

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

: Aşağıdaki ekleme deyimini düşünün saklı yordamda tiple tablo tanımı. Tablo tanımını kendiniz aramanız ve doğru tipi girmeniz gerekecektir.

bakınız: http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html İşte

şöyle der: Ne bağlamda

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 

....