Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какое значение записано в out параметрах процедуры MySQL после её вызова? / 4 сообщений из 4, страница 1 из 1
06.09.2018, 12:39
    #39698946
NickNameSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какое значение записано в out параметрах процедуры MySQL после её вызова?
Вопрос собственно в САБЖ. То есть экспериментально получается вроде бы NULL записан. Но является ли это стандартом, прописанным в спецификации, или случайностью? То есть по спецификации, после вызова процедуры неинициализированные out параметры всегда NULL или могут иметь случайное значение?

Не нашёл описания этого момента. Если кто знает, киньте пожалуйста ссылку, только не на всю спецификацию языка, а на нужную главу :)

Например:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
> delimiter $$
> create procedure test_proc(out o_param varchar(100))
    -> BEGIN
    -> select o_param;
    -> END
    -> $$
Query OK, 0 rows affected (0.01 sec)

> delimiter ;
> set @o_par = 'qq'; call test_proc(@o_par); select @o_par;
Query OK, 0 rows affected (0.00 sec)

+---------+
| o_param |
+---------+
| NULL    |
+---------+
1 row in set (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

+--------+
| @o_par |
+--------+
| NULL   |
+--------+
1 row in set (0.00 sec)

> drop procedure test_proc;
Query OK, 0 rows affected (0.00 sec)

> 



Как видим, в параметре NULL. Но есть ли гарантия, что так всегда?
...
Рейтинг: 0 / 0
06.09.2018, 12:49
    #39698955
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какое значение записано в out параметрах процедуры MySQL после её вызова?
NickNameSQLесть ли гарантия, что так всегда?Да.
https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html An IN parameter passes a value into a procedure. The procedure might modify the value, but the modification is not visible to the caller when the procedure returns. An OUT parameter passes a value from the procedure back to the caller. Its initial value is NULL within the procedure, and its value is visible to the caller when the procedure returns. An INOUT parameter is initialized by the caller, can be modified by the procedure, and any change made by the procedure is visible to the caller when the procedure returns.
...
Рейтинг: 0 / 0
06.09.2018, 13:21
    #39698989
NickNameSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какое значение записано в out параметрах процедуры MySQL после её вызова?
Akina, спасибо большое, очень помогло!
...
Рейтинг: 0 / 0
06.09.2018, 13:25
    #39698993
NickNameSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какое значение записано в out параметрах процедуры MySQL после её вызова?
Akina, причём сегодня тоже смотрел эту статью, но по диагонали и, видимо, пропустил XD
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какое значение записано в out параметрах процедуры MySQL после её вызова? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]