2010-08-18 331 views
2

我有幾個關於存儲過程的問題。經過數小時的搜索,我真的找不到任何非常簡單的查詢示例。MySQL存儲過程

CREATE PROCEDURE test1(IN uid INT) 
BEGIN 
    SELECT USER_NAME FROM USERS WHERE USER_ID = uid; 
END // 

此查詢時間爲「uid」作爲輸入,並選擇用戶名該uid, 是否有人可以解釋我是如何調用該程序在PHP和也,我怎麼輸出的實際行到PHP的變種?

+0

使用什麼數據庫接口?庫MySQLi? PDO?還有別的嗎? – 2010-08-18 11:46:46

+0

我已經使用phpmyadmin插入存儲過程,但我試圖通過php執行 – 2010-08-18 11:54:06

回答

0

您應該考慮與存儲的函數,它返回一個VARCHAR這樣做:

CREATE FUNCTION test1(uid INT) RETURNS VARCHAR(100) 
BEGIN 
    DECLARE V_RETURN_VAL VARCHAR(100); 

    SELECT USER_NAME 
    INTO V_RETURN_VAL 
    FROM USERS 
    WHERE USER_ID = uid; 

    RETURN V_RETURN_VAL; 
END // 
1

據我所知,你只需要把調用之前它在查詢:

$result = mysql_query("CALL test1(".$args.")"); 
$username = mysql_result($result); 
+0

但是,我不必在過程中定義一個'OUT'var來獲取選定的行到php var嗎? – 2010-08-18 11:47:00

0

你可以只使用「CALL」並檢索行,就像它是一個普通查詢一樣。

唯一不同的情況是如果過程返回多個結果集,在這種情況下,您必須通過一個給出下一個結果集的方法遍歷它們(甚至是空的)。

OUT參數浪費時間,因爲它們需要更多往返和服務器端狀態來獲取其結果;如果你使用它們,你總會寫更多的代碼並且會有更多的錯誤。