|
Хранимые функции MYSQLОбсуждение темы Хранимые функции MYSQL в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Создаю хранимую функцию в MYSQL по аналогу как написано здесь . Изменил только PROCEDURE на FUNCTION, т.к. вычитал что в PROCEDURE RETURN не ... |
|
Опции темы |
01.04.2010, 16:58 | #1 |
|
Создаю хранимую функцию в MYSQL по аналогу как написано здесь.
Изменил только PROCEDURE на FUNCTION, т.к. вычитал что в PROCEDURE RETURN не ставится. Пробовал так: PHP код:
PHP код:
Script line: 3 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(E_ID INTEGER, NAME CHAR(200)) AS variable P_ID integer; BEGIN selec' at line 2. Ругается на шаблон возвращаемых данных. Если очистить тело функции и поменять RETURNS(E_ID INTEGER, NAME CHAR(200)) AS variable P_ID integer; на RETURNS ineger(50), то все отлично срабаотыват. В чем может быть ошибка? |
|
02.04.2010, 12:44 | #2 | |
|
В том, что функция обязана вернуть скаляр - то есть одно значение. Остальное можете возвращать через параметры функции...
Добавлено через 6 минут Более того Цитата:
Последний раз редактировалось Асмодиан; 02.04.2010 в 12:44.. Причина: Добавлено сообщение |
|
|
02.04.2010, 14:05 | #3 | |
|
Цитата:
Вы говорите про возврат значений в переданные параметры. Как это реализуемо? В MySQL же нет передачи значений по ссылке. Можно какую-нибудь ссылочку на пример плз. |
|
|
02.04.2010, 14:25 | #4 |
|
Anthony, ну юзайте же документацию )))
http://dev.mysql.com/doc/refman/5.1-...procedure.html mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; mysql> CALL simpleproc(@a); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @a; |
|
Этот пользователь сказал спасибо Асмодиан за это полезное сообщение: | Anthony (02.04.2010) |
02.04.2010, 15:33 | #5 |
|
Асмодиан, Спасибо
Смотрел мануал да этого, а пример проглядел. Возможно ли построить такую структру: WHILE (SELECT val, name FROM t) DO{ //пока есть какие-нибудь записи... ADD TO RETURN TABLE // добавляем найденные значения в таблицу. } Дело в том что я попытался построить такой цикл, делая временную таблицу (честно говоря хотелось бы этого избежать) Делаю SELECT @a, в результате если больше одной записи, ругается на это. Получается что таблицу целиком нельзя туда вернуть? Последний раз редактировалось Anthony; 02.04.2010 в 15:33.. Причина: Добавлено сообщение |
|
02.04.2010, 15:37 | #6 |
|
Честно - мало что помню из функций и прочего. а особенно такие вещи. Посмотри ещё в сторону процедур - они вроде погибче...
и смотри примеры Последний раз редактировалось Асмодиан; 02.04.2010 в 15:40.. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Javascript. Браузер не показывает функции | Ван | HTML, CSS, JavaScript | 2 | 13.04.2016 13:52 |
Как в php работают функции? | Вертер | ASP, Perl, PHP и MySQL | 2 | 11.02.2010 20:42 |
HELP!!! Проблема с кодировкой PHP функции mail() | oberon | HTML, CSS, JavaScript | 8 | 31.03.2007 15:07 |
Помогите, плз, в проблеме по Js функции | kluger | ASP, Perl, PHP и MySQL | 3 | 12.09.2006 08:28 |
вызов php-функции | handler | ASP, Perl, PHP и MySQL | 3 | 30.08.2006 13:12 |
Реклама на форуме
Условия размещения рекламы
Биржа ссылок
Заработай на сайте!
|