2010-08-18 8 views
2

У меня есть несколько вопросов относительно хранимых процедур. После нескольких часов работы с Google, я действительно не могу найти действительно простые примеры запросов.MySQL Хранимые процедуры

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

этот запрос принимает «UID» в качестве входных данных и выбирает имя для этого UID, Может кто-то пожалуйста, объясните, как я называю эту процедуру в PHP, а также, как сделать вывод I фактические строки в PHP вар?

+0

Использование интерфейса базы данных? Mysqli? PDO? Что-то другое? –

+0

Я вставил хранимую процедуру с помощью phpmyadmin, но я пытаюсь выполнить через php –

ответ

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

AFAIK вам просто нужно поставить вызов перед ним в запросе:

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

Но разве я не должен определять 'OUT' var в процедуре, чтобы получить выбранные строки в php var? –

0

Вы можете просто использовать «CALL» и получить строки, как если бы это был обычный запрос.

Единственный случай, когда он отличается, заключается в том, что процедура возвращает несколько наборов результатов, и в этом случае вы ДОЛЖНЫ пройти через все их (даже пустые) с помощью метода, который дает следующий результат.

Параметры OUT - это пустая трата времени, так как для их получения требуются более округлые и серверные состояния; вы всегда пишете больше кода и получаете больше ошибок, если используете их.

Смежные вопросы