Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: При создании хранимой процедуры MySQL выдает ошибку
 
 автор: rosson   (11.12.2006 в 01:15)   письмо автору
 
 

Примеры тупо беру из приобретенной книги MySQL 5 в подлиннике стр. 665-667.
CREATE PROCEDURE my_ver ()
BEGIN
  SELECT VERSION();
END

Установлена версия 5.0.18 (denwer). В спарке с PHP 5.1.6 - работает без малейших замечаний.
В начале грешил на привелегии пользователя, т.к. из-за проблем с кодировкой не использую root. Навесил для пользователя все возможные привелегии и все равно прет ошибка синтаксиса. Может там все элементарно, но уже потрачено два дня! Кто в состоянии помочь, пожалуйста откликнитесь! Заранее благодарен, с пожеланием всего наилучшего
rosson

   
 
 автор: cheops   (11.12.2006 в 13:13)   письмо автору
 
   для: rosson   (11.12.2006 в 01:15)
 

Приведите точное сообщение об ошибке? Окончание запроса при помощи DELIMITER переопределяте? Дело в том, что если его не переопределить, то точка с запятой после SELECT VERSION() будет рассматриваться как окончание всего запроса и хранимая процедура будет рассекаться на две части.

   
 
 автор: rosson   (11.12.2006 в 13:30)   письмо автору
 
   для: cheops   (11.12.2006 в 13:13)
 

К сожалению в данный момент я вдали от родного компа, но я не работал в консоли, а просто в phpMyAdmin'е пытался и соответственно программно. Ответ один - ошибка.
Вечером приведу пример точного сообщения.
Премного благодарен за отклик

   
 
 автор: cheops   (11.12.2006 в 13:35)   письмо автору
 
   для: rosson   (11.12.2006 в 13:30)
 

phpMyAdmin может не дать вам выполнить запрос на создание хранимой процедуры, так как тоже ориентируется на точку с запятой, вероятно пока его интерфейс не будет обновлён придётся ориентироваться на консоль.

   
 
 автор: rosson   (11.12.2006 в 13:47)   письмо автору
 
   для: cheops   (11.12.2006 в 13:35)
 

А возможно создание хранимой процедуры стандартными средствами PHP?
Т.е. формируем запрос соответственного содержания и пытаемя выполнить.

   
 
 автор: cheops   (11.12.2006 в 14:10)   письмо автору
 
   для: rosson   (11.12.2006 в 13:47)
 

Да, это возможно, так как функция mysql_query() всегда выполняет один запрос
<?php 
  
require_once("config.php");
  
$query "CREATE PROCEDURE my_version ()
            BEGIN
              SELECT VERSION();
            END"
;
  if(!
mysql_query($query)) exit(mysql_error());
?>

   
 
 автор: rosson   (11.12.2006 в 14:22)   письмо автору
 
   для: cheops   (11.12.2006 в 14:10)
 

Засада в том, что и этот вариант не проходит, т.к. я пытался и этот вариант реализовать.
Но попробую еще и если не будет получаться то выставлю ошибку, иначе сообщение с благодарностью.
Спасибо за оказанное внимание.
rosson

   
 
 автор: cheops   (11.12.2006 в 15:34)   письмо автору
 
   для: rosson   (11.12.2006 в 14:22)
 

Хм... а у меня сработало, у вас клиентская библиотека какой версии? Посмотреть это можно в отчёте функции phpinfo()
<?php
  phpinfo
();
?>

   
 
 автор: rosson   (13.12.2006 в 06:06)   письмо автору
 
   для: cheops   (11.12.2006 в 15:34)
 

Ура заработало!
Но все равно скажу: 5.0.22.
А ошибка как всегда от невнимательности.

Спасибо за поддержку в трудный час. У вас хороший сайт и класные книги.
С пожеланием всего наилучшего
rosson

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования