Сделал, ну очень простую фун-цию Код (Text): CREATE DEFINER = 'root'@'%' FUNCTION BGHM.proba_function1(Param1 INT) RETURNS char(255) CHARSET utf8 BEGIN DECLARE val1 char(255); SELECT 'Получилось!' INTO val1; RETURN val1; END Вызов: PHP: public function proba_function(){ $value1=100; $stmt=$this->obj_podkl->prepare('select proba_function1(:value1) as prizn1'); $stmt->bindParam(':value1',$value1,PDO::PARAM_INT); $stmt->execute(); while($row=$stmt->fetch()){ echo $row['prizn1']; } } Результата нет. В чем дело?
Потому что у вас ошибка в запросе. К какой таблице вы обращаетесь? Посмотрите документацию, какой синтаксис имеет запрос SELECT...
@Зингер, обратите внимание на то, как Вы обращаетесь к хранимой процедуре, и на то, как обращение к ней описано в документации: http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx (искать по фразе Calling stored procedures)
@Sail, фразу "Хранимая процедура" я вообще не употреблял. Речь идет о хранимой ФУНКЦИИ(!), которая вызывается НЕ из PHP(PDO), а уже в запросе SQL. Еще раз НЕ ПРОЦЕДУРА, а ФУНКЦИЯ. На SQL SERVER, я проделывал подобное 100500 раз, и это ускоряет получение результата, т.к. коду на клиенте нет необходимости дополнительно обрабатывать результат. На MySQL такое не прошло, поэтому решил создать класс с функцией на PHP, который будет обрабатывать данные с MySQL (datetime) и отображать в удобном юзеру формате.
@Зингер, действительно, поторопился В таком случае просто проверьте на предмет: 'The user specified as a definer ('root'@'%') does not exist' За этим исключением приведенный Вами код получает ожидаемый результат