|
|
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые! Меня интересует проблема значений по-умолчанию в хранимых процедурах MySQL. Исходя из документации : авторproc_parameter: [ IN | OUT | INOUT ] param_name type , где никакого упоминания о значениях по-умолчанию, делаю вывод - их нет. Но как так может быть?! Мне нужно расширить старую процедуру новым параметром, которая уже используется, и не хочется переписывать код её вызова добавляя новый параметр со значением по-умолчанию. Хочется это сделать в описании самой процедуры. Мне кажется, тут должен быть выход. Есть мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2014, 14:46:18 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
b10sМне нужно расширить старую процедуру новым параметром, которая уже используется, и не хочется переписывать код её вызоваНапишите другую процедуру с другим именем и в новых местах вызывайте ее. А старую процедуру можно или оставить как есть, или ее внутренности заменить на вызов новой процедуры с явно указанным "параметром по умолчанию". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2014, 14:57:47 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
b10sникакого упоминания о значениях по-умолчанию, делаю вывод - их нет. Но как так может быть?! А элементарно. Нет не значений по умолчанию, а опциональных параметров. Значение же есть ВСЕГДА. Например, null... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2014, 17:44:43 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina, ну ка, умник, скажи чем отличается "значение по умолчанию" от "опционального параметра"? приведи два опеределения этих понятий, которые ты используешь в своем выражении так уверенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 13:06:12 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Ты чё, всамделе тупой? Опциональный параметр - это параметр, который может быть опущен в выражении вызова. Значение по умолчанию, это значение, которое присваивается такому параметру. Наличие второго - следствие первого. Если у параметра есть значение по умолчанию - он ОБЯЗАТЕЛЬНО опциональный. Но не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 13:10:56 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina, ты всё правильно написал. И, по-идее, должен понимать о чем речь. Однако опустим ненужные споры. Скажи лучше мне вот что: исходя из твоей фразы авторНаличие второго - следствие первого. Если у параметра есть значение по умолчанию - он ОБЯЗАТЕЛЬНО опциональный. Но не наоборот. я не смог вывести то, что ты имел ввиду под словом "наоборот". Как может быть наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 13:28:58 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
В том и дело, что НЕ МОЖЕТ быть дефолтного значения у ОБЯЗАТЕЛЬНОГО параметра. Ибо оно гарантированно НЕ БУДЕТ применено. В то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. Для (в тосм числе и) этого во всех языках и диалектах есть специальные значения вроде Null, Empty и т.п. - именно такое специальное значение присваивается пропущенному в вызове опциональному параметру, которому дефолтное значение не задано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 14:17:57 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina , а мне вот тоже интересно... вот процедура (условно, про ifnull/coalesce в курсе): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Ясно, что запрос 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 14:37:59 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
А никак. Не предусмотрено такое синтаксисом диалекта. Хотите - сделайте процедуру-обёртку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:01:24 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
AkinaА никак. Не предусмотрено такое синтаксисом диалекта. Хотите - сделайте процедуру-обёртку.Ну вот, бодались-бодались, в итоге пришли к тому же, о чем я говорил еще сутки назад :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:07:47 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
miksoftAkinaА никак. Не предусмотрено такое синтаксисом диалекта. Хотите - сделайте процедуру-обёртку.Ну вот, бодались-бодались, в итоге пришли к тому же, о чем я говорил еще сутки назад :)Да понятно, конечно, тоже было сразу, но про параметры как-то неясно... а вдруг я чего-то недопонял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:11:55 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Кстати, разделяю недоумение ТС по поводу отсутствия такой несложной фичи. В Оракле весьма выручает, когда система находится в многолетней эксплуатации одновременно с доработкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:16:03 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007, Кстати, разделяю недоумение ТС по поводу отсутствия такой несложной фичи. В Оракле весьма выручает, когда система находится в многолетней эксплуатации одновременно с доработкой.Да и в MS SQL тоже... А куда ж без этого, все сразу не предусмотришь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:17:44 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina, вынужден указать на противоречие в двух сообщениях: авторЗначение же есть ВСЕГДА. Например, null... и авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. Советую обратиться к определению 'тип данных'. Всем принимавшим участие спасибо за идеи и размышления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:30:58 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
b10sвынужден указать на противоречие в двух сообщениях: авторЗначение же есть ВСЕГДА. Например, null... и авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. Советую обратиться к определению 'тип данных'.Если говорить абстрактно-теоретически, т.к. в MySQL все равно такого нет, то тут нет противоречия. Уточню вторую цитату, чтобы пояснить:авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть явно указанное дефолтное значение.По той причине, что существует и неявное дефолтное значение, которое и будет использовано в крайнем случае, если никакое другое никак не было указано или передано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:35:41 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
b10sAkina, вынужден указать на противоречие в двух сообщениях: авторЗначение же есть ВСЕГДА. Например, null... и авторВ то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. То есть для Вас термины "значение" и "дефолтное значение" - одно и то же??? в таком случае я умываю руки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:39:00 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Хорошо, тогда я вырву эти фразы из конекста беседы и приведу их к виду достойному: было авторЗначение же есть ВСЕГДА. Например, null... и В то же время у опционального параметра НЕ ОБЯЗАНО быть дефолтное значение. стало автору любой переменной значение по-умолчанию есть всегда - будь то null, 44, undefined или "Москва" и в то же время у опционального параметра не обязано быть явно указанное значение по-умолчанию Вот так - да. Эта мысль понятна, ясна и справедлива. А если наложить призму контекста нашей беседы, сквозь которую, естественно, я и читаю все ответы в этой теме, то фраза ложна и абсурдна. Согласны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:46:14 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina, вы правы, вам нужно было написать то, что вы имели ввиду, а не вот эту кашу авторНет не значений по умолчанию, а опциональных параметров. Значение же есть ВСЕГДА. Например, null... где "значения" я приравниваю к "значений по умолчанию" но опустим это. сейчас начнется спор: ваша фраза авторНет не значений по умолчанию, а опциональных параметров. - неверна как в контексте беседы, так и вне. Т.к. фраза "опциональный параметр имеет значения по умолчанию" - аксиома! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:51:31 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
вот не надо плеваться в качестве спасибо вам помочь хотели, но возникла терминологическая путаница. Разрешили ее - вот и славно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:53:13 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, но я ведь должен указать на неё, терминологическую путаницу? как минимум две причины вижу сделать это: - избавить читателей темы этого форума от путаницы - помочь человеку, запостившему это, разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:55:27 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Предлагаю администратору этой ветки оставить первые 2 сообщения т.к. лишь они затрагивают данную проблему. Хотя, остальная дискуссия не менее интересна, но выходит за рамки темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 16:03:00 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Уж совсем разгорячился я этой темой. Перечитал свой вопрос и наконец понял что имел ввиду Akina . Да, понятнее станет если заменить "значение по-умолчанию" фразой "необязательный параметр". Согласен! Но, и существующая формулировка какой бы корявой не казалась, остается верной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 16:09:37 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Хорошо, зайдём с другой стороны. Значение по умолчанию, оно же дефолтное - это понятие стадии разработки. Т.е. на стадии разработки оно уже существует - заданное явно программистом или неявно соглашениями языка. Значение - это понятие стадии исполнения. На стадии разработки его не существует. Даже переменной, которая будет иметь значение, ещё не существует - память не выделена, значение не присвоено. Так понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 16:15:01 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
b10s, чем не решение ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 16:35:28 |
|
||
|
procedures & default values
|
|||
|---|---|---|---|
|
#18+
Akina, у нас разве об этом речь? :) Но я с радостью продолжу диалог. Вы разделяете то, чего не стоит разделять. Будь то значение по-умолчанию или просто значение переменной - всё одно, значение. Это очень важный момент. И у каждого значения есть тип. Да, даже у значения по умолчанию есть тип. Вот, например, пресловутый NULL(в других языках есть undefined). Казалось бы какой это к черту тип?! Ан нет. Это тип с одним единственным возможным значением, с набором допустимых операций, со своей сутью и философией. Это тоже очень важно понимать. И, пожалуй, Вы не правы в том, что понятия "значение" не существует на стадии разработки. Как же, позвольте, можно разрабатывать не предполагая что за значения у тебя будут в дальнейшем? Я считаю, что и на стадии разработки есть понятие "значение" которое настолько широко, насколько широко понятие "тип". Но это всё философия. К чему Вы начали заход с этой стороны? Жду продолжения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 16:38:28 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38581286&tid=1835144]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 382ms |

| 0 / 0 |
