|
Условие в хранимой процедуре
|
|||
---|---|---|---|
#18+
Здравия желаю! Не могу понять причину ошибки, логика процедуры такая: проверка - существует ли запись с таким product_id, если есть - возвращаем соответствующее информационное сообщение, если нет - добавляем запись. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Но беда в том. что если таблица полностью пустая - добавление записи происходит, а далее, даже для нового product_id происходит возврат. что запись уже существует. Код: plsql 1. 2. 3. 4. 5. 6. 7.
При этом обычный запрос SELECT EXISTS(SELECT * FROM `product_list` WHERE `product_id`= [АЙДИПРОДУКТА]) отрабатывает корректно, т.е. возвращает 0 и 1 для разных случаев. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2020, 08:47 |
|
Условие в хранимой процедуре
|
|||
---|---|---|---|
#18+
Смотрим на подзапрос Код: sql 1.
Если существует локальная переменная product_id (параметр функции или определена в DECLARE), то во WHERE используется она, и результат будет либо TRUE, если переменная не NULL, либо NULL , если переменная NULL. Если такой переменной не существует, то во WHERE используется поле с таким именем из таблицы product_list , и результат будет либо TRUE, если в таблице есть записи, и последняя обработанная запросом запись имеет в этом поле не NULL, либо NULL , если таблица пуста либо последняя обработанная запросом запись имеет в этом поле NULL. Если это была попытка сравнить поле и значение переменной, то подзапрос должен быть Код: sql 1.
В этом случае до знака равенства - поле таблицы, а после - переменная. Или другими словами - переменная всегда имеет приоритет перед одноимённым полем и маскирует его. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2020, 20:21 |
|
|
start [/forum/search_topic.php?author=inevity&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 683ms |
total: | 868ms |
0 / 0 |