|
|
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. В базе использую следующею функцию Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вызываю функцию так SELECT cat_hierarhy(100); функция отрабатывает нормально в том случае если она находит запись с id = 100, но если в функцию передать несуществующий ID то получается или бесконечный цикл или еще что-то, но вся база виснет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 15:59 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
а что должна делать эта функция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 16:05 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
pr0n1xесли в функцию передать несуществующий ID то получается ... что первый же запрос к таблице не возвращает записей. А проверять это никто и не думает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 16:12 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
как правило не делаются функции для конкретного селекта-таблицы. Делается фун-я для использования в общих случаях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 17:18 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
добавил проверку в функцию, но все происходит зацикливание авторDELIMITER $$ CREATE FUNCTION cat_hierarhy (id int) RETURNS text CHARSET utf8 DETERMINISTIC BEGIN DECLARE cat_id int; DECLARE str text CHARSET utf8; DECLARE cat text CHARSET utf8; DECLARE url text CHARSET utf8; WHILE id > 0 DO SELECT category_id, category_parent_id, category_name, category_url INTO cat_id, id, cat, url FROM tbl_category WHERE category_id = id; IF id = '' THEN SET id = 0; END IF; SET str = CONCAT_WS(';', str, cat, url, cat_id); END WHILE; RETURN str; END$$ DELIMITER ; но если указать существующий ID то функция отрабатывает корректно, в чем здесь ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:24 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
а разве можно внутри функции изменять её аргумент? насколько я помню, такое только процедуры позволяют, и только с INOUT-параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:29 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
tanglir, Код: plaintext а так можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:56 |
|
||
|
Помогите найти ошибку в функции MySql
|
|||
|---|---|---|---|
|
#18+
авторThe INTO clause can name a list of one or more variables, which can be user-defined variables, stored procedure or function parameters, or stored program local variables. (Within a prepared SELECT ... INTO OUTFILE statement, only user-defined variables are permitted;see Section 13.6.4.2, “Local Variable Scope and Resolution”.) The selected values are assigned to the variables. The number of variables must match the number of columns. The query should return a single row. If the query returns no rows, a warning with error code 1329 occurs (No data), and the variable values remain unchanged . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 06:12 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=108&tid=1832049]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
3ms |
| others: | 198ms |
| total: | 341ms |

| 0 / 0 |
