0

Пожалуйста, помогите мне:Как звонить хранимую процедуру в zend1 с doctrine1

Я хочу вызвать MySQL хранимые процедуры в zend1 по doctrine1

Моя хранимой процедуры:

CREATE PROCEDURE sp_test() 
BEGIN 
    SELECT 'Number of records: ', count(*) from user; 
END// 

хранимая процедура рабочего отлично в phpMyAdmin.

Но как назвать эту хранимую процедуру в doctrine1 по zend1

Это один простой запрос доктрины

$data = Doctrine_Query::create()->select ("u.id")->from ('user u')->fetchArray(); 

Но я хочу вызвать sp_test() хранимой процедуры в коде.

Спасибо,

ответ

0

Я думаю, вам нужно использовать простой PDO для вызова хранимых процедур. Для этого вы должны сделать что-то вроде этого:

$dbh = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh(); 
$stmt = $dbh->prepare('BEGIN sp_test(); END;') 
$stmt->execute(); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

В принципе, я не уверен, какой двигатель БД вы используете. В приведенном выше примере это Oracle способ вызова хранимых процедур, но то, что идет в качестве аргумента prepare, является чистым sql, поэтому вы можете поставить почти что-нибудь там. Также обратите внимание, что выше пример использует подготовленное заявление, - если вам не нужно это, Вы можете использовать следующий код ($sql переменная содержит ваш любой код SQL):

$conn = Doctrine_Manager::getInstance()->getCurrentConnection(); 
$conn->execute($sql); 
+0

Мы используем Mysql –

+1

Тогда вы, вероятно, следует использовать MySQL конкретные sql для вызова процедуры - насколько я знаю, он будет выглядеть как 'call sp_test();' –