powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какое значение записано в out параметрах процедуры MySQL после её вызова?
4 сообщений из 4, страница 1 из 1
Какое значение записано в out параметрах процедуры MySQL после её вызова?
    #39698946
NickNameSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос собственно в САБЖ. То есть экспериментально получается вроде бы 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
Какое значение записано в out параметрах процедуры MySQL после её вызова?
    #39698955
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Какое значение записано в out параметрах процедуры MySQL после её вызова?
    #39698989
NickNameSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо большое, очень помогло!
...
Рейтинг: 0 / 0
Какое значение записано в out параметрах процедуры MySQL после её вызова?
    #39698993
NickNameSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, причём сегодня тоже смотрел эту статью, но по диагонали и, видимо, пропустил XD
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какое значение записано в out параметрах процедуры MySQL после её вызова?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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