powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / procedures & default values
34 сообщений из 34, показаны все 2 страниц
procedures & default values
    #38580239
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые!

Меня интересует проблема значений по-умолчанию в хранимых процедурах MySQL.
Исходя из документации :

авторproc_parameter:
[ IN | OUT | INOUT ] param_name type

, где никакого упоминания о значениях по-умолчанию, делаю вывод - их нет. Но как так может быть?!
Мне нужно расширить старую процедуру новым параметром, которая уже используется, и не хочется переписывать код её вызова добавляя новый параметр со значением по-умолчанию. Хочется это сделать в описании самой процедуры. Мне кажется, тут должен быть выход. Есть мысли?
...
Рейтинг: 0 / 0
procedures & default values
    #38580259
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sМне нужно расширить старую процедуру новым параметром, которая уже используется, и не хочется переписывать код её вызоваНапишите другую процедуру с другим именем и в новых местах вызывайте ее. А старую процедуру можно или оставить как есть, или ее внутренности заменить на вызов новой процедуры с явно указанным "параметром по умолчанию".
...
Рейтинг: 0 / 0
procedures & default values
    #38580467
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sникакого упоминания о значениях по-умолчанию, делаю вывод - их нет. Но как так может быть?!
А элементарно.
Нет не значений по умолчанию, а опциональных параметров. Значение же есть ВСЕГДА. Например, null...
...
Рейтинг: 0 / 0
procedures & default values
    #38581073
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

ну ка, умник, скажи чем отличается "значение по умолчанию" от "опционального параметра"?
приведи два опеределения этих понятий, которые ты используешь в своем выражении так уверенно.
...
Рейтинг: 0 / 0
procedures & default values
    #38581079
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты чё, всамделе тупой?
Опциональный параметр - это параметр, который может быть опущен в выражении вызова.
Значение по умолчанию, это значение, которое присваивается такому параметру.
Наличие второго - следствие первого. Если у параметра есть значение по умолчанию - он ОБЯЗАТЕЛЬНО опциональный. Но не наоборот.
...
Рейтинг: 0 / 0
procedures & default values
    #38581099
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

ты всё правильно написал. И, по-идее, должен понимать о чем речь. Однако опустим ненужные споры.

Скажи лучше мне вот что: исходя из твоей фразы
авторНаличие второго - следствие первого. Если у параметра есть значение по умолчанию - он ОБЯЗАТЕЛЬНО опциональный. Но не наоборот.
я не смог вывести то, что ты имел ввиду под словом "наоборот". Как может быть наоборот?
...
Рейтинг: 0 / 0
procedures & default values
    #38581145
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том и дело, что НЕ МОЖЕТ быть дефолтного значения у ОБЯЗАТЕЛЬНОГО параметра. Ибо оно гарантированно НЕ БУДЕТ применено.

В то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. Для (в тосм числе и) этого во всех языках и диалектах есть специальные значения вроде Null, Empty и т.п. - именно такое специальное значение присваивается пропущенному в вызове опциональному параметру, которому дефолтное значение не задано.
...
Рейтинг: 0 / 0
procedures & default values
    #38581171
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina ,
а мне вот тоже интересно...
вот процедура (условно, про ifnull/coalesce в курсе):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create procedure test (a int, b int)
begin
  if(b is null) then 
      select a pA, 0 pB;
  end if;
  if(b is not null) then 
    select a pA, b pB;
  end if;
end;


Ясно, что запрос call test(1,2) сработает на ура
Вопрос: как изменить процедуру, чтобы сработали как предыдущий запрос, так и этот: call test(3) ?
Писать call test(3,null) - нельзя

P.S. в MS SQL для этого можно написать create procedure test @a int, @b int=null as ...
P.P.S. http://sqlfiddle.com/#!2/0f8ce6/1
...
Рейтинг: 0 / 0
procedures & default values
    #38581205
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак. Не предусмотрено такое синтаксисом диалекта.

Хотите - сделайте процедуру-обёртку.
...
Рейтинг: 0 / 0
procedures & default values
    #38581211
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА никак. Не предусмотрено такое синтаксисом диалекта.

Хотите - сделайте процедуру-обёртку.Ну вот, бодались-бодались, в итоге пришли к тому же, о чем я говорил еще сутки назад :)
...
Рейтинг: 0 / 0
procedures & default values
    #38581222
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftAkinaА никак. Не предусмотрено такое синтаксисом диалекта.

Хотите - сделайте процедуру-обёртку.Ну вот, бодались-бодались, в итоге пришли к тому же, о чем я говорил еще сутки назад :)Да понятно, конечно, тоже было сразу, но про параметры как-то неясно... а вдруг я чего-то недопонял
...
Рейтинг: 0 / 0
procedures & default values
    #38581229
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

Кстати, разделяю недоумение ТС по поводу отсутствия такой несложной фичи.
В Оракле весьма выручает, когда система находится в многолетней эксплуатации одновременно с доработкой.
...
Рейтинг: 0 / 0
procedures & default values
    #38581233
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftCygapb-007,

Кстати, разделяю недоумение ТС по поводу отсутствия такой несложной фичи.
В Оракле весьма выручает, когда система находится в многолетней эксплуатации одновременно с доработкой.Да и в MS SQL тоже... А куда ж без этого, все сразу не предусмотришь...
...
Рейтинг: 0 / 0
procedures & default values
    #38581253
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

вынужден указать на противоречие в двух сообщениях:

авторЗначение же есть ВСЕГДА. Например, null...
и
авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение.

Советую обратиться к определению 'тип данных'.


Всем принимавшим участие спасибо за идеи и размышления.
...
Рейтинг: 0 / 0
procedures & default values
    #38581259
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sвынужден указать на противоречие в двух сообщениях:

авторЗначение же есть ВСЕГДА. Например, null...
и
авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение.

Советую обратиться к определению 'тип данных'.Если говорить абстрактно-теоретически, т.к. в MySQL все равно такого нет, то тут нет противоречия.
Уточню вторую цитату, чтобы пояснить:авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть явно указанное дефолтное значение.По той причине, что существует и неявное дефолтное значение, которое и будет использовано в крайнем случае, если никакое другое никак не было указано или передано.
...
Рейтинг: 0 / 0
procedures & default values
    #38581263
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sAkina,

вынужден указать на противоречие в двух сообщениях:

авторЗначение же есть ВСЕГДА. Например, null...
и
авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение.
То есть для Вас термины "значение" и "дефолтное значение" - одно и то же??? в таком случае я умываю руки...
...
Рейтинг: 0 / 0
procedures & default values
    #38581272
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, тогда я вырву эти фразы из конекста беседы и приведу их к виду достойному:

было

авторЗначение же есть ВСЕГДА. Например, null...
и
В то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение.

стало

автору любой переменной значение по-умолчанию есть всегда - будь то null, 44, undefined или "Москва"
и
в то же время у опционального параметра не обязано быть явно указанное значение по-умолчанию

Вот так - да. Эта мысль понятна, ясна и справедлива.

А если наложить призму контекста нашей беседы, сквозь которую, естественно, я и читаю все ответы в этой теме, то фраза ложна и абсурдна.

Согласны?
...
Рейтинг: 0 / 0
procedures & default values
    #38581280
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

вы правы, вам нужно было написать то, что вы имели ввиду, а не вот эту кашу

авторНет не значений по умолчанию, а опциональных параметров. Значение же есть ВСЕГДА. Например, null...

где "значения" я приравниваю к "значений по умолчанию"
но опустим это.

сейчас начнется спор:

ваша фраза
авторНет не значений по умолчанию, а опциональных параметров. - неверна как в контексте беседы, так и вне.
Т.к. фраза "опциональный параметр имеет значения по умолчанию" - аксиома!
...
Рейтинг: 0 / 0
procedures & default values
    #38581282
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот не надо плеваться в качестве спасибо

вам помочь хотели, но возникла терминологическая путаница.

Разрешили ее - вот и славно
...
Рейтинг: 0 / 0
procedures & default values
    #38581286
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

но я ведь должен указать на неё, терминологическую путаницу?
как минимум две причины вижу сделать это:
- избавить читателей темы этого форума от путаницы
- помочь человеку, запостившему это, разобраться
...
Рейтинг: 0 / 0
procedures & default values
    #38581305
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю администратору этой ветки оставить первые 2 сообщения т.к. лишь они затрагивают данную проблему.
Хотя, остальная дискуссия не менее интересна, но выходит за рамки темы.
...
Рейтинг: 0 / 0
procedures & default values
    #38581317
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж совсем разгорячился я этой темой. Перечитал свой вопрос и наконец понял что имел ввиду Akina .
Да, понятнее станет если заменить "значение по-умолчанию" фразой "необязательный параметр". Согласен!
Но, и существующая формулировка какой бы корявой не казалась, остается верной.
...
Рейтинг: 0 / 0
procedures & default values
    #38581323
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, зайдём с другой стороны.

Значение по умолчанию, оно же дефолтное - это понятие стадии разработки. Т.е. на стадии разработки оно уже существует - заданное явно программистом или неявно соглашениями языка.

Значение - это понятие стадии исполнения. На стадии разработки его не существует. Даже переменной, которая будет иметь значение, ещё не существует - память не выделена, значение не присвоено.

Так понятно?
...
Рейтинг: 0 / 0
procedures & default values
    #38581355
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10s, чем не решение ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE getLastMsg( in mode varchar(1), in window varchar(20), inout date_begin datetime, inout date_end datetime )
BEGIN
  if window is not null then
    set date_end = DATE_ADD( now(), INTERVAL '1' MINUTE);
    set date_begin = DATE_SUB( now(), INTERVAL window MINUTE);
  elseif date_begin is not null and date_end is not null then
    set window = TIMESTAMPDIFF( MINUTE, date_end, date_begin);
  end if;
-- ...

END
//
...
Рейтинг: 0 / 0
procedures & default values
    #38581359
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

у нас разве об этом речь? :)

Но я с радостью продолжу диалог. Вы разделяете то, чего не стоит разделять.
Будь то значение по-умолчанию или просто значение переменной - всё одно, значение. Это очень важный момент.
И у каждого значения есть тип. Да, даже у значения по умолчанию есть тип.
Вот, например, пресловутый NULL(в других языках есть undefined). Казалось бы какой это к черту тип?! Ан нет. Это тип с одним единственным возможным значением, с набором допустимых операций, со своей сутью и философией. Это тоже очень важно понимать. И, пожалуй, Вы не правы в том, что понятия "значение" не существует на стадии разработки. Как же, позвольте, можно разрабатывать не предполагая что за значения у тебя будут в дальнейшем? Я считаю, что и на стадии разработки есть понятие "значение" которое настолько широко, насколько широко понятие "тип". Но это всё философия.

К чему Вы начали заход с этой стороны? Жду продолжения.
...
Рейтинг: 0 / 0
procedures & default values
    #38581361
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sу нас разве об этом речь? :)

Мужчина, тебе шашечки, или ехать ?
...
Рейтинг: 0 / 0
procedures & default values
    #38581366
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

очень занятно! Продемонстрируйте вызов это процедуры, пожалуйста, с количеством параметров отличающимся от количества в определении процедуры.
...
Рейтинг: 0 / 0
procedures & default values
    #38581367
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

не понял, на что намёк?
...
Рейтинг: 0 / 0
procedures & default values
    #38581398
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b10sБудь то значение по-умолчанию или просто значение переменной - всё одно, значение. Это очень важный момент.
Вот в том и Ваша проблема, что Вы не понимаете разницы между этими вещами.

Попробуем ещё раз.

Программист написал код:
Код: vbnet
1.
sub x(optional var default 123)



Существует ли дефолтное значение переменной var? да, существует, и равно 123.
Существует ли значение переменной var? существует ли сама переменная var? ответ на оба вопроса - нет. И только когда данный код будет выполняться, ответы на эти вопросы изменятся на "да".
...
Рейтинг: 0 / 0
procedures & default values
    #38581402
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Программист написал код:
Код: vbnet
1.
sub x(optional var default 123)



Существует ли дефолтное значение переменной var? да, существует, и равно 123.
Существует ли значение переменной var? существует ли сама переменная var? ответ на оба вопроса - нет. И только когда данный код будет выполняться, ответы на эти вопросы изменятся на "да".

С этим очевидным утверждением я согласен. Да, память будет заполнена конкретным значением лишь в момент выполнения программы. Но как это влияет на значение по-умолчанию в необязательном параметре? Или к чему это?
...
Рейтинг: 0 / 0
procedures & default values
    #38581404
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

извините, но мне кажется, что мы скатимся к устройству Вселенной такими темпами :)
...
Рейтинг: 0 / 0
procedures & default values
    #38581411
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

я, конечно, понимаю к чему вы клоните.
Но я решительно не понимаю, как это знание может помочь в решении вопроса о присовении значений по-умолчанию в необязательных параметрах хранимых процедур MySQL!
...
Рейтинг: 0 / 0
procedures & default values
    #38581415
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам уже ответили, и не один раз - не предусмотрено диалектом... так ведь нет - как сделать то, что сделать нельзя!
...
Рейтинг: 0 / 0
procedures & default values
    #38581420
b10s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

ура! Ваши все выкладки мы общими усилиями свели к слову - "нельзя".

Итого, мы имеем 3 мысли по этому вопросу:

miksoft - во втором сообщении, достойна внимания и самая дельная, имхо
Akina - мысль "нельзя", ну-с спасибо за ваше мнение
MasterZiv - следует разобраться, что имелось ввиду. пока не ясно.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / procedures & default values
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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