Программирование баз данных MS SQL Server (1084479), страница 105
Текст из файла (страница 105)
С формальной точки зрения в данном сценарии можно было бьг обойтись без объявления этой перелгенной, поскольку вместо нее можно применять непосредственно значение 661РЕНТТТУ. Отметим, что значение 661РЕНТТТУ присваивается с помощью системной переменной. Это значение всегда доступно и представляет собой последнее идентификационное значение, присвоенное в текущем соединении. Но, как и при использовании большинства других системных переменных, следует усвоить привычку явно переносить значение 661РЕИТ1ТУ в локальную переменную. Это позволяет гарантировать,что в само значение системной переменной не будут случайно внесены изменения.
Безусловно, в рассматриваемом сценарии такая опасность вообще исключена. но, как всегда, рекомендуем соблюдать во всем единообразие. 414 Глава 11 'дсвтЯОсрйвссвощ~гпчредг'печатает':пэеренорвить:значение;:.полгученное;с'гпомощЬю лЮбой'ОИСтемнрй йюроЕМЕННОй,;,' 'В ОПЕциапЬНсО ОбЬяВЭаННуЮ11пяатЕГОттврэВМЕНГНузэ',:;:,Отсг.'ПОаВОЛЛоет",'МНЕ руав.- рйННГОСтЬЮ::,ИСПОЛЬЗгсаатЬ ВйаЧЕНИВ-ПорегМЕННрй '.рйав,п',тОМ';,,Чта 'аа-'ЛКЗбоа.'ИаМЕН1ЕНИЕ'ВтОГО: внвчания отвечаю::;я сам;: Если:жег прзименлетсл;непоррродственнрснстемнаяпеременнвэв" ,тв.
зачартую'ВельйгГбмть' уйерейным."вутьм, не:прбЙаолалб'лн,измвнйййе анананий;устанйвлнг ВВЕМОГЕХЕЕ';ПОМОЩЬЮ,'РООКОЛЬКУ"ВЫаОЕМРОЛЫВГИНСзтеа ОнотЕМНМХ'ПЕРЕМЕННМХ ЕСУВ1йат' ВЛФОГССЯ НЕ."ВаМИ,':а,'СамсОй',СгИСтЕМОй: В.РЕаУЛЬтатв'ЕтЬГО"ЕПОсЛНЕ,,МОГУТ:ВсаНИКН1ГГЬ-,таКИЕ . ЕйтУаисИИ„;,Чтсс:Снотсвоычаг ИЗМЕННЕт ЗиаЧЕНИЕ',,'ВОЗВРаа1ЙЕМОВ.,',СметЕМНОй; ПЕРЕМЕННОЙ' В,тОт мбмейт,'"кегпаВы~эуоюровсвмне О1кйдвете',',чтО:йриВОдихк йойвлвниюйамйхгнепринтньчх йОедедотэнй: Соваанэ'НМХ'С'ЭКСПЛютацэИЕй;ПрИЛЕЛГЕНИЕ,"-':.",.':НЕПрЕГГСКаагуаММХ':~эавуЛЬтатОЕ, Задание значений переменных В предыдущем разделе было показано, как объявить переменные, а в этом разделе речь пойдет о том, как изменить значение переменной.
В настоящее время в языке ЯО1. предусмотрены два способа задания значения переменной — для этой цели можно использовать оператор ЯЕЕЕСТ или ЯЕТ. С точки зрения выполняемых функций эти операторы действуют почти одинаково, не считая того, что оператор ЯЕЬЕСТ позволяет получить исходное присваиваемое значение из таблицы, указанной в операторе ЯЕЕЕСТ. Автор до сих пор не может понять, по каким причинам предусмотрены оба этих способа.
Опубликовав две книги, в которых был задан этот вопрос, я надеялся, что кто-то пришлет мне письмо по электронной почте и даст хороший ответ, но этого не произошло. Достаточно сказать, что оператор ЯЕТ теперь предусмотрен в стандарте АХЯ1, поэтому его описание приведено и в настоящей книге. Но я не мог найти никаких возражений против использования аналогичных функциональных средств, предусмотренных в операторе ЯЕЬЕСТ; создается впечатление, что даже в стандарте АХЫ не исключается возможность присваивать литеральные значения с помощью оператора ЯЕЕЕСТ, а не ЯЕТ.
Я уверен, что оператор ЯЕТ предусмотрен ради страховки, но не могу утверждать это категорически. На этом закончим анализ причин. по которым предусмотрены два оператора присваивания, и перейдем к рассмотрению различий в способах их использования. Задание значений переменных с помощью оператора ЯЕТ Оператор ЯЕТ обычно используется для задания значений переменных в такой форме, какая более часто встречается в процедурных языках. В качестве типичных примеров применения этого оператора можно указать следующие: Якт 6тога1Соэг = 10 ЯЕТ 6тога1соэо = 6сп1ССоэо * 1.1 Обратите внимание на то, что во всех этих операторах непосредственно осуществляются операции присваивания, в которых используются либо явно заданные значения, либо другие переменные.
С помощью оператора ЯЕТ невозможно присвоить переменной значение, полученное с помощью запроса; запрос должен быть выполнен отдельно и только после этого полученный результат может быть присвоен с помощью оператора ЯЕТ. Например, попытка выполнения такого оператора вызывает ошибку: Сценарии и пакеты 415 ОЯЕ Ноггпнтпа ОЕСЬаая 6тезг попеу яят 6тезг = МЛХ(пп'Суг'се) ЕЕОМ (Ога вега'1э) яЕЬЕСт 6тезг а следующий оператор выполняется вполне успешно: ОЯЕ Моггпютпй ОЕСЬХая 6тезь попеу яят 6теэг = [ЯЕЬЕСТ МХХ щп Свгтсе) ЕЕОМ [Огаег Оега61э)) ЯЕЬЕСт 6теэг Беэусловно, последняя синтахсическая конспфукуил является вполне допустимой, но в соответствии с обсуепфинятым соглашенигм такой способфеализауии кода никогда не пфименлетсв.
И в этом случае авпиф не может сказать со всей<b>Текст обрезан, так как является слишком большим</b>.