2013-10-11 53 views
0

我試圖在mySQL中設置一個存儲過程,它基於一個近似匹配返回人們的聯繫信息:說與你交談的人,但他們的名字是非常規拼寫的,而你不記得他們的完整電話號碼。從mysql中的過程返回一行

我借了一些代碼誰使用Oracle的SQL朋友,這看起來是這樣的:

create procedure getPNrecbyID (in phone_number VARCHAR2, 
         in name VARCHAR2, 
         out target person_contact%rowtype) 
... 

但MySQL不具備「%ROWTYPE」語法。返回一個主鍵不一定有效,因爲我想返回的內容遍佈在幾張表格中(個人;電話號碼,它對個人有一個外鍵限制,但我只需要一個電話號碼;而電子郵件,同樣的事情作爲電話號碼,person_contact是一個視圖)。有沒有辦法返回視圖(或表;「我不喜歡它,但我可以找到一種方法,使其工作)的」%rowtype「的等價物;我應該返回(可能inout)足夠的變量(煩人,但可行);還是有另一種我失蹤的方式?

回答

0

嘗試使用此語法 - 不只是選擇的過程作爲最後一行

DELIMITER $$ 
create procedure getPNrecbyID (in phone_number VARCHAR2, in name VARCHAR2) READS SQL DATA SQL SECURITY INVOKER 
BEGIN 
select * from table; 
END$$ 
+0

一對夫婦澄清的問題: 1)在哪裏我的代碼(「...」在我的問題)去? 2)如果我只是用select語句關閉過程,它會返回? –

+0

你的代碼在BEGIN之前去過SELECT,最後的SELECT語句是什麼存儲過程返回這個select的結果給調用者 –

+0

好了,現在我該如何利用結果? 例如,我只是賣了一些東西給「John Doe,電話號碼123-4567」;我需要給他發一封電子郵件,感謝他用正確的拼寫和敬語來購買,並且希望該電子郵件能夠自動生成。有沒有辦法在調用'getPNrecbyID'的過程中從查詢中獲取信息? –