Ms sql server процедуры. Хранимые процедуры SQL: создание и использование

13.03.2019

Если вы родились левшой, то уже знаете, с какими трудностями им приходится сталкиваться с самого детства. К примеру, парты в школе были явно сделаны для того, чтобы удобнее было писать правшам. Но это только верхушка айсберга.

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

Мы предлагаем вам 10 фактов о левшах, которые могут стать для вас неожиданностью. Давайте начнем.

1. Левши составляют лишь 10 процентов населения

Все верно, только один из десяти человек оказывается левшой. Это делает их очень особенными, не правда ли?

2. Левши имеют свой день

13 августа — официальный день левшей, так что, если вы относитесь к 10 % населения, вам стоит начать планировать, что вы будете делать в этот особенный день.

3. У них слово «левый» ассоциируется со значением «хорошо»

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

4. Левшей легко испугать

Исследование, проведенное учеными из Университета Королевы Маргарет в Эдинбурге, Шотландия, показало, что левши чаще показывают признаки посттравматического стресса после просмотра страшных клипов. Исследователи объясняют, что реакции страха, за которые отвечает правая сторона головного мозга (она является доминирующей для левшей), более распространены у левшей.

5. У них может быть более высокий уровень IQ

По статистике, в мире есть больше левшей с IQ выше 140, чем правшей. Кроме того, Альберт Эйнштейн и Бенджамин Франклин также были левшами, так что, если вы также больше полагаетесь на левую руку, вы в хорошей компании!

6. Левши чаще смущаются

Как сообщает BBC, левши более склонны поддаваться чувствам скованности или смущения. Это связано с тем, что за такие эмоции отвечает правая сторона мозга.

7. Рождение левши может зависеть от состояния мамы во время беременности

Согласно ABC News, у женщин, которые чувствуют стресс во время беременности, более вероятно родятся левши. Кроме того, если женщине на момент рождения ребенка больше 40 лет, она также имеет больше шансов родить левшу (на 128 %), чем в возрасте 20 лет.

8. Левши чаще оказываются творческими людьми

У левшей более развитое дивергентное мышление. Это означает, что они в состоянии прийти к нескольким выводам на основе определенного набора информации. Такая особенность делает из левшей творческих личностей.

9. Среди королевской семьи очень много левшей

Принц Уильям и его сын принц Джордж родились левшами. В королевской семье есть много и других левшей, в том числе королева Виктория, король Георг VI, а также королева-мать.

10. Среди американских президентов было восемь левшей

Джеймс А. Гарфилд, Герберт Гувер, Гарри С. Трумэн, Джеральд Форд, Рональд Рейган, Джордж Буш-старший, Билл Клинтон и Барак Обама — это известные президенты-левши в истории Америки. Хотя это число может быть значительно выше, так как в прошлом было принято скрывать такую особенность, ведь левши вызывали неодобрение.

Все человечество можно разделить на множество групп, используя разные критерии: нацию, религию, цвет кожи, половые признаки, на любителей чая или кофе и так далее. Еще одно существенное различие, которое поделило всю человеческую расу на два лагеря - это доминантная деятельность правой или левой руки. Чем левша отличается от правши? Попробуем разобраться.

Знаменитые левши

Левшами были такие выдающиеся личности, как Юлий Цезарь, А. Македонский, У. Черчилль, оба Буша, Б. Обама, Л. да Винчи, А. Эйнштейн, Н. Тесла, И. Ньютон, П. Пикассо, многие актеры кино.

Несколько фактов про левшей из истории

Попросту говоря, одни люди являются левшами, другие - правшами. Чем левша отличается от правши - это очевидно, исходя из самих терминов. Однако, помимо наглядных отличий, существуют еще и те, которые не видно невооруженным взглядом. Например, у левшей более развито мозга, отвечающее за и память.

И действительно, многие творческие люди "леворукие". В давние времена сильно обращали внимание на то, чем левша отличается от правши.

Кстати говоря, на протяжении веков одни народы уважали таких людей, другие, наоборот, всячески их дискредитировали. Так, в Древней Греции они были в почете, так как им приписывали ни больше ни меньше - родство с богами, и считалось, что такие люди приносят удачу. Подобные верования преобладали в Индии и Китае.

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

Судьба левшей в 20 столетии

В начале и середине 20 столетия отказались от столь радикальных методов и с малых лет ребенка просто переучивали, то есть вырабатывали привычку больше задействовать правую руку. Подобный пример хорошо описан в романе ""Поющие в терновнике"", где главная героиня, маленькая Мэгги, подвергалась подобной практике.

Этому было вполне разумное объяснение. Практически вся сельскохозяйственная и военная техника собиралась под правшей. Левшам просто тяжело было бы приспосабливаться к ним в более позднем возрасте.

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

Различия между левшами и правшами

Чем отличаются левши от правшей - становится видно с раннего возраста. Больше половины левшей обладают более быстрыми темпами развития, по сравнению со своими праворукими одногодками. Процент людей с задатками гениальности среди левшей значительно выше.

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

Левша и правша: отличия

Интересный факт, основанный на исследовании: на тысячу правшей рождается один левша. Есть и другие любопытные наблюдения:

  • Не все открыто признаются, но анонимный опрос выяснил, что у почти 68 процентов правшей среди 1000 опрошенных левши не вызывают доверия, и у них нет желания заводить с ними более близкие отношения.
  • В бывшие времена на территории некоторых стран левши предпочитали заключать брачные союзы с себе подобными, чтобы их потомки также обладали данной особенностью. Это было связано со сказочной теорией, которая гласила, что леворукость означает наличие у человека божественных генов.
  • Левши быстро осваивают и адаптируют под себя все необходимые им технические приспособления.

Несколько фактов о левшах

Можно выделить несколько пунктов о том, чем отличается левша от правши, в чем разница между ними:

  1. У левшей более развито правое У правшей, соответственно, наоборот. В первом случае это креативность, эмоциональность, впечатлительность, резкая смена настроения, развитая интуиция; во втором - логическое мышление, способности к математике и другим точным наукам. Оба полушария осуществляют контроль за движениями тела, но делают это перекрестно.
  2. Многие спортсмены являются левшами. Это касается различных единоборств, бокса, фехтования, где они отрабатывают удобную им и проблематичную для соперника тактику.
  3. Каждый пятый выдающийся человек - левша. Проводили исследование: "левым" и "правым" предлагали решить одну и ту же задачу. Левши справлялись быстрее и почти всегда находили больше вариантов решения.
  4. В сложных обстоятельствах правши действуют более оперативно, однако левши находят оригинальные выходы из положения.
  5. Переученные леворукие люди при возврате к своим природным данным могут вернуть и свой ""божественный дар"".
  6. Есть и обратная сторона. Многие психически больные, известные серийные убийцы, маньяки и насильники являлись левшами либо проявляли скрытую "леворукость".

Тесты: как определить левшу в ребенке

Существует несколько способов определить принадлежность новорожденного к той или иной группе. Если в течение первых недель жизни младенец, лежа на спине, поднимает левую руку вверх, плотно прижав правую к себе - он левша. В первые три дня после рождения ребенок преимущественно наклоняет голову вправо - он правша, влево - левша.

Для более старших детей достаточно понаблюдать за их повседневными действиями: какой рукой держит расческу, столовые приборы, какую руку протягивает, чтобы что- то взять. Вывод сделать очень легко.

Дети-левши

Стоит упомянуть, что существует еще третий вид людей, который называется амбидекстры. Это люди, в равной степени владеющие как правой, так и левой рукой. Это очень редкое явление, которым владеют менее 1 процента человечества.

Вот чем отличается левша от правши в юном возрасте, так это упрямством и хорошо развитой мелкой моторикой. Не удивляйтесь, если ребенок-левша в трехлетнем возрасте рисует лучше, чем это делали вы в старших классах, поет мелодичнее, чем соловей, и проявляет интерес к игре на музыкальных инструментах.

Доверчивость, можно даже сказать наивность, - вот чем отличаются левши от правшей. Бывает, что такие дети позже начинают разговаривать и имеют затруднения в произношении определенных звуков.

Психологи утверждают, что для формирования полноценного и здорового развития у детей-левшей необходимо создать для них обстановку любви и понимания. Не указывать на неаккуратность, что поначалу у них проявляется, а также не сравнивать с другими детьми. Ребенок не должен чувствовать себя изгоем из-за своей врожденной особенности. Задача родителей - привить таким детям самоуважение и помогать осваивать окружающие вещи в их собственном ритме.

Способность стойко выносить трудности - вот чем левша отличается от правши. Возможно, эта черта характера была унаследована ими от предков, подвергавшихся различного рода дискриминациям.

Последствия неправильного обучения левшей

Конечно же, не все так просто и очевидно. Не надо сразу вешать ярлыки на людей исходя из того, какая у них рука ведущая. Практически все специалисты в области образования и развития личности в один голос заявляют о вреде переучивания левшей. Ведь в дальнейшем это может привести к нарушению режима сна и бодрствования, вызвать расстройства пищеварения, частые мигрени, болевые ощущения в правой руке и много других отступлений от нормы.

Чем отличаются левши от правшей? Список этот большой. Но не следует забывать, что способность писать той или иной рукой - далеко не самое главное качество человека.

Отличие левшей от правшей довольно многогранно, но в целом их поведение может нести в себе много общего.

Человеческий организм – большая загадка для самого же человека.

Кто такой левша? Это человек, у которого доминирует правая половина головного мозга.

Обычно доминирует какая-либо половина мозга, при этом происходит перекрещивание, т.е. правой половиной человеческого тела управляет левое полушарие, а левой – правое. Ученые выделили степени доминирования: сильно выраженная (“стопроцентный” правша или ярко выраженный левша) и слабо выраженная (может быть 1-2 признака “левшества” – ведущий левый глаз и левое ухо, но ведущая рука – правая).

А люди, так называемые амбидекстры, у которых одинаково работают оба полушария, они одинаково хорошо владеют обеими руками, ушами, глазами, т.е. парными органами. Таких людей немного, но, по исследованиям ученых, их количество постоянно растет.

Как же выяснить, к какому типу относится человек? Далее приведем тесты, а пока – общие характеристики.

Если человек – “стопроцентный” правша, у него наблюдаются следующие признаки:

Пишет и выполняет большинство действий, особенно сложных, правой рукой

Трубку телефона прикладывает к правому уху

Ведущие глаз, ухо – правые

Ведущая нога тоже правая (она толчковая, с нее человек начинает идти)

Если же хоть один из этих признаков имеет зеркальное отражение (при ведущей правой руке лучше слышит левое ухо, например) – это более (или менее) выраженный левша. Таких людей ученые называют “скрытыми левшами”.

Ученые, проводившие исследования по выявлению явных и скрытых левшей, выяснили, что таких людей – 62%! Т.е. больше половины здоровых людей! Хоть у разных исследователей процентное соотношение левшей-правшей несколько отличается, все равно получается, что левши составляют около половины общего населения.

Большинство людей являются “частичными” левшами (т.е. ведущая рука – левая, а ведущий глаз, например, правый).

У маленьких детей скрытая леворукость, явные признаки ведущего правого полушария наблюдаются гораздо чаще, чем у взрослых. Также часто дети одинаково хорошо владеют и левой, и правой руками, т.е. являются амбидекстрами. Считается, что до года закладывается основа развития мозга, а ведущее полушарие формируется к 6-7 годам, но уже в 4 года можно уверенно сказать, какая рука у малыша ведущая.

За что “отвечают” полушария?

Левое полушарие отвечает за логическое, аналитическое, абстрактное мышление. Отвечает за речь (примерно 50% по последним исследованиям).

Правое полушарие обрабатывает информацию одномоментно (т.е. левши и амбидекстры при тестировании справляются с заданиями быстрее). Принимает участие в адаптационных процессах. Отвечает за эмоции, интуитивные способности, “помогает” понимать юмор, отвечает за пространственно-зрительные функции (ориентация на местности). Очень музыкально, чутко реагирует на интонацию. Отвечает за образное мышление, воображение, творческие способности.

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

Какие проблемы возникают у детей–левшей и амбидекстров (оба полушария работают одинаково).

Обучение письму, грамоте рассчитано на праворуких детей, жесткие требования (класть тетрадь горизонтально с небольшим наклоном, держать ручку определенным образом, т.д.) мешают детям неправшам полноценно развиваться, нарушается усвоение информации, происходит нарушение почерка, возникают грамматические ошибки.

Часто дети в начале освоения навыков письма изображают буквы, цифры зеркально (“Е” и “З”, “6” и “9”, т.д.) Это говорит о том, что у ребенка еще не сформировалось окончательно распределение функций полушарий, со временем ошибки исчезнут, бояться их и бороться за “правильность” не стоит.

Обычно такие дети хорошо рисуют, одарены музыкально, а вот с письмом и чтением примерно лет до 9и (у каждого индивидуально) возникают проблемы.

Часто у левшей происходит задержка речевого развития, неправильное произношение звуков, но и это проходит по мере взросления.

Левши часто не любят точные науки, но не из-за того, что им неинтересно или сложно. Просто обучение в школе строится с учетом особенностей восприятия правшей, в леворукие дети несколько по-другому усваивают учебный материал.

У таких детей хорошо развита интуиция, образное мышление, а вот логика “хромает”.

Не переучивайте ребенка – левшу! И не позволяйте этого делать другим взрослым (учителям, воспитателям, родственникам)!

У детей-левшей, которых упорно переучивали, развивается невроз, вот некоторые его проявления:

Нарушения сна, нарушения аппетита, головные боли, страхи, дневной и ночной энурез, вялость, заторможенность, ухудшение зрения.

Наиболее часто у детей-левшей школьного возраста наблюдается астенический невроз. Его признаки: повышенная утомляемость, резкое снижение работоспособности, ребенок может продуктивно и активно работать только на первых двух уроках, затем усиливается двигательная расторможенность. Дети постоянно жалуются на усталость, они вялые. Приготовление уроков затягивается, повторное переписывание только ухудшает качество работы.

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

Не торопитесь сменить руку, особенно если переучивание началось задолго до школы и ребенок уже учится в школе, пользуясь в основном правой рукой. В таком случае придется смириться с некоторым отставанием общего развития, как правило, после 1го класса все налаживается (при отсутствии давления со стороны взрослых).

Но в ситуации, когда ребенок упорно работает левой рукой, несмотря на переучивание, разрешение ее использовать может снять многие проблемы.

Если ребенка переучивали, он пользуется правой рукой, но еще не учится в школе или только начал обучение, смена руки также приведет к решению и предупреждению многих проблем.

ЛЕВША, ПРАВША ИЛИ АМБРИДЕКСТР?

Тесты

Тестируется один ребенок, чтобы исключить “обезьянничанье”. Тесты проводятся несколько раз с временными промежутками (особенно с детьми), и на основе совокупных результатов делается вывод.

Переплетите пальцы рук в “замок”. Если сверху оказался палец правой руки – признак правши.

Примите позу Наполеона (руки скрещены на груди). Рука, которая оказалась сверху – ведущая.

Аплодирование. Правши хлопают правой рукой по неподвижной левой ладони, левши –наоборот. Дети обычно аплодируют обеими ладошками, поставленными параллельно друг другу – признак амбидекстра, тоже относится и ко взрослым, аплодирующим обеими руками.

Человек обычно жестикулирует ведущей рукой.

Испытуемому дают 2 карандаша, завязывают глаза и просят нарисовать два круга или квадрата. Рисунок, выполненный ведущей рукой, получается аккуратнее, при этом движения ведущей руки м.б. медленнее, зато более точными, меньше дрожания, линии более четкие, углы не сглажены. Малыш может тоже попробовать выполнить это задание с открытыми и с закрытыми глазами.

Если ребенок уже умеет писать, попросите его написать свое имя одновременно обеими руками с открытыми или с закрытыми глазами. Как правило, левши ставят обе руки в центр листа и начинают писать правой рукой слева направо, а левой – справа налево. С закрытыми глазами левши пишут свою фамилию в зеркальном, а с открытыми как обычно.

Ребенку предлагается несколько коробков. Задание: “найди спичку в одной из коробочек”. Ведущая та рука, которая совершает активные действия (открывает, закрывает, достает и т.д.)

Вырезание ножницами. Аккуратнее получается ведущей рукой.

Чтобы выявить ведущую ногу, последите, как сидит человек, если при закидывании нога на ногу сверху оказывается правая – она ведущая. При ходьбе ведущая нога делает более широкий шаг.

Чтобы определить ведущий глаз, предложите ребенку посмотреть в маленькую дырочку (в фотоаппарате, в листе бумаги, т.д.) Первым делом к отверстию прикладывается ведущий глаз.

Амбидекстры, выполняя тесты, дают разнобой. Такие люди могут писать правой рукой, слушать левым ухом, есть левой рукой и т.д.

Цель работы – научиться создавать и использовать хранимые процедуры на сервере БД.

1. Проработка всех примеров, анализ результатов их выполнения в утилите SQL Server Management Studio. Проверка наличия созданных про- цедур в текущей БД.

2. Выполнение всех примеров и заданий по ходу лабораторной работы.

3. Выполнение индивидуальных заданий по вариантам.

Пояснения к выполнению работы

Для освоения программирования хранимых процедур используем при- мер базы данных c названием DB_Books , которая была создана в лабора- торной работе №1. При выполнении примеров и заданий обращайте вни- мание на соответствие названий БД, таблиц и других объектов проекта.

Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде.

Типы хранимых процедур

Системные хранимые процедуры предназначены для выполнения раз- личных административных действий. Практически все действия по адми- нистрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных.

Пользовательские хранимые процедуры реализуют те или иные дейст- вия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе дан- ных, где и выполняется.

Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на ло- кальные и глобальные. Локальные временные хранимые процедуры могут быть вызваны только из того соединения, в котором созданы. При созда- нии такой процедуры ей необходимо дать имя, начинающееся с одного символа #. Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти процедуры при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы.

Создание, изменение хранимых процедур

Создание хранимой процедуры предполагает решение следующих за- дач: планирование прав доступа. При создании хранимой процедуры следует учитывать, что она будет иметь те же права доступа к объектам базы данных, что и создавший ее пользователь; определение параметров храни- мой процедуры, хранимые процедуры могут обладать входными и выход- ными параметрами; разработка кода хранимой процедуры. Код процедуры может содержать последовательность любых команд SQL, включая вызов других хранимых процедур.

Синтаксис оператора создания новой или изменения имеющейся хранимой процедуры в обозначениях MS SQL Server:

{ CREATE | ALTER } PROC[ EDURE] имя_процедуры [ ;номер] [ { @имя_параметра тип_данных } [ VARYING ] [ = DEFAULT ] [ OUTPUT] ] [ ,... n] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ] [ FOR REPLICATION] AS sql_оператор [ ... n]

Рассмотрим параметры данной команды.

Используя префиксы sp_, #, ##, создаваемую процедуру можно определить в качестве системной или временной. Как видно из синтаксиса команды, не допускается указывать имя владельца, которому будет принадлежать создаваемая процедура, а также имя базы данных, где она должна быть размещена. Таким образом, чтобы разместить создаваемую хранимую процедуру в конкретной базе данных, необходимо выполнить команду CREATE PROCEDURE в контексте этой базы данных. При обращении из тела хранимой процедуры к объектам той же базы данных можно использовать укороченные имена, т. е. без указания имени базы данных. Когда же требуется обратиться к объектам, расположенным в других базах данных, указание имени базы данных обязательно.

Для передачи входных и выходных данных в создаваемой хранимой процедуре имена параметров должны начинаться с символа @. В одной хранимой процедуре можно задать множество параметров, разделенных запятыми. В теле процедуры не должны применяться локальные переменные, чьи имена совпадают с именами параметров этой процедуры. Для определения типа данных параметров хранимой процедуры подходят любые типы данных SQL, включая определенные пользователем. Однако тип данных CURSOR может быть использован только как выходной параметр хранимой процедуры, т.е. с указанием ключевого слова OUTPUT.

Наличие ключевого слова OUTPUT означает, что соответствующий параметр предназначен для возвращения данных из хранимой процедуры. Однако это вовсе не означает, что параметр не подходит для передачи значений в хранимую процедуру. Указание ключевого слова OUTPUT предписывает серверу при выходе из хранимой процедуры присвоить текущее значение параметра локальной переменной, которая была указана при вызове процедуры в качестве значения параметра. Отметим, что при указании ключевого слова OUTPUT значение соответствующего параметра при вызове процедуры может быть задано только с помощью локальной переменной. Не разрешается использование любых выражений или констант, допустимое для обычных параметров. Ключевое слово VARYING применяется совместно с параметром OUTPUT, имеющим тип CURSOR. Оно определяет, что выходным параметром будет результирующее множество.

Ключевое слово DEFAULT представляет собой значение, которое будет принимать соответствующий параметр по умолчанию. Таким образом, при вызове процедуры можно не указывать явно значение соответствующего параметра.

Так как сервер кэширует план исполнения запроса и компилированный код, при последующем вызове процедуры будут использоваться уже готовые значения. Однако в некоторых случаях все же требуется выполнять перекомпиляцию кода процедуры. Указание ключевого слова RECOMPILE предписывает системе создавать план выполнения хранимой процедуры при каждом ее вызове.

Параметр FOR REPLICATION востребован при репликации данных и включении создаваемой хранимой процедуры в качестве статьи в публикацию. Ключевое слово ENCRYPTION предписывает серверу выполнить шифрование кода хранимой процедуры, что может обеспечить защиту от использования авторских алгоритмов, реализующих работу хранимой процедуры. Ключевое слово AS размещается в начале собственно тела хранимой процедуры. В теле процедуры могут применяться практически все команды SQL, объявляться транзакции, устанавливаться блокировки и вызываться другие хранимые процедуры. Выход из хранимой процедуры можно осуществить посредством команды RETURN.

Удаление хранимой процедуры

DROP PROCEDURE { имя_процедуры} [ ,... n]

Выполнение хранимой процедуры

Для выполнения хранимой процедуры используется команда: [ [ EXEC [ UTE] имя_процедуры [ ;номер] [ [ @имя_параметра= ] { значение | @имя_переменной} [ OUTPUT ] | [ DEFAULT ] ] [ ,... n]

Если вызов хранимой процедуры не является единственной командой в пакете, то присутствие команды EXECUTE обязательно. Более того, эта команда требуется для вызова процедуры из тела другой процедуры или триггера.

Использование ключевого слова OUTPUT при вызове процедуры раз- решается только для параметров, которые были объявлены при создании процедуры с ключевым словом OUTPUT.

Когда же при вызове процедуры для параметра указывается ключевое слово DEFAULT, то будет использовано значение по умолчанию. Естест- венно, указанное слово DEFAULT разрешается только для тех параметров, для которых определено значение по умолчанию.

Из синтаксиса команды EXECUTE видно, что имена параметров могут быть опущены при вызове процедуры. Однако в этом случае пользователь должен указывать значения для параметров в том же порядке, в каком они перечислялись при создании процедуры. Присвоить параметру значение по умолчанию, просто пропустив его при перечислении, нельзя. Если же тре- буется опустить параметры, для которых определено значение по умолча- нию, достаточно явного указания имен параметров при вызове хранимой процедуры. Более того, таким способом можно перечислять параметры и их значения в произвольном порядке.

Отметим, что при вызове процедуры указываются либо имена пара- метров со значениями, либо только значения без имени параметра. Их комбинирование не допускается.

Использование RETURN в хранимой процедуре

Позволяет выйти из процедуры в любой точке по указанному условию, а также позволяет передать результат выполнения процедуры числом, по которому можно судить о качестве и правильности выполнения процеду- ры. Пример создания процедуры без параметров:

CREATE PROCEDURE Count_Books AS SELECT COUNT (Code_book) FROM Books GO

Задание 1.

EXEC Count_Books

Проверьте результат.

Пример создания процедуры c входным параметром:

CREATE PROCEDURE Count_Books_Pages @Count_pages AS INT AS SELECT COUNT (Code_book) FROM Books WHERE Pages>= @Count_pages GO

Задание 2 . Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды

EXEC Count_Books_Pages 100

Проверьте результат.

Пример создания процедуры c входными параметрами:

CREATE PROCEDURE Count_Books_Title @Count_pages AS INT , @Title AS CHAR (10 ) AS SELECT COUNT (Code_book) FROM Books WHERE Pages>= @Count_pages AND Title_book LIKE @Title GO

Задание 3. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды

EXEC Count_Books_Title 100 , "П%"

Проверьте результат.

Пример создания процедуры c входными параметрами и выходным параметром:

CREATE PROCEDURE Count_Books_Itogo @Count_pages INT , @Title CHAR (10 ) , @Itogo INT OUTPUT AS SELECT @Itogo = COUNT (Code_book) FROM Books WHERE Pages>= @Count_pages AND Title_book LIKE @Title GO

Задание 4. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите с помощью набора команд:

Sql> Declare @q As int EXEC Count_Books_Itogo 100, "П%", @q output select @q

Проверьте результат.

Пример создания процедуры c входными параметрами и RETURN:

CREATE PROCEDURE checkname @param INT AS IF (SELECT Name_author FROM authors WHERE Code_author = @param) = "Пушкин А.С." RETURN 1 ELSE RETURN 2

Задание 5. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд:

DECLARE @return_status INT EXEC @return_status = checkname 1 SELECT "Return Status" = @return_status

Пример создания процедуры без параметров для увеличения значения ключевого поля в таблице Purchases в 2 раза:

CREATE PROC update_proc AS UPDATE Purchases SET Code_purchase = Code_purchase* 2

Задание 6. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды

EXEC update_proc

Пример процедуры с входным параметром для получения всей ин- формации о конкретном авторе:

CREATE PROC select_author @k CHAR (30 ) AS SELECT * FROM Authors WHERE name_author= @k

Задание 7.

EXEC select_author "Пушкин А.С." или select_author @k= "Пушкин А.С." или EXEC select_author @k= "Пушкин А.С."

Пример создания процедуры с входным параметром и значением по умолчанию для увеличения значения ключевого поля в таблице Purchases в заданное количество раза (по умолчанию в 2 раза):

CREATE PROC update_proc @p INT = 2 AS UPDATE Purchases SET Code_purchase = Code_purchase * @p

Процедура не возвращает никаких данных.

Задание 8. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд:

EXEC update_proc 4 или EXEC update_proc @p = 4 или EXEC update_proc --будет использовано значение по умолчанию.

Пример создания процедуры с входным и выходным параметрами. Создать процедуру для определения количества заказов, совершенных за указанный период:

CREATE PROC count_purchases @d1 SMALLDATETIME, @d2 SMALLDATETIME, @c INT OUTPUT AS SELECT @c= COUNT (Code_purchase) FROM Purchases WHERE Date_order BETWEEN @d1 AND @d2 SET @c = ISNULL(@c, 0 )

Задание 9. Создайте данную процедуру в разделе Stored Procedures ба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд:

DECLARE @c2 INT EXEC count_purchases ’01- jun- 2006 ’, ’01- jul- 2006 ’, @c2 OUTPUT SELECT @c2

Варианты заданий к лабораторной работе №4

Общие положения. В утилите SQL Server Management Studio создать новую страницу для кода (кнопка «Создать запрос»). Программно сделать активной созданную БД DB_Books с помощью оператора Use. Создать хранимые процедуры c помощью операторов Create procedure, причем самостоятельно определить имена процедур. Каждая процедура будет выполнять по одному SQL запросу, которые были выполнены во второй лабораторной работе. Причем код SQL запросов нужно изменить таким образом, чтобы в них можно было передавать значения полей, по которым осуществляется поиск.

Например, исходное задание и запрос в лабораторной работе №2:

/*Выбрать из справочника поставщиков (таблица Deliveries) названия ком- паний, телефоны и ИНН (поля Name_company, Phone и INN), у которых название компании (поле Name_company) „ОАО МИР“.

SELECT Name_company, Phone, INN FROM Deliveries WHERE Name_company = "ОАО МИР"

*/ –В данной работе будет создана процедура:

CREATE PROC select_name_company @comp CHAR (30 ) AS SELECT Name_company, Phone, INN FROM Deliveries WHERE Name_company = @comp

–Для запуска процедуры используется команда:

EXEC select_name_company "ОАО МИР"

Список заданий

В утилите SQL Server Management Studio создать новую программу. Программно сделать активной индивидуальную БД, созданную в лабораторной работе №1, с помощью оператора Use. Создать хранимые процедуры c помощью операторов Create procedure, причем самостоятельно определить имена процедур. Каждая процедура будет выполнять по одному SQL запросу, которые представлены в виде отдельных заданий по вариантам.

Вариант 1

1. Вывести список сотрудников, у которых есть хотя бы один ребенок.

2. Вывести список детей, которым выдали подарки в указанный период.

3. Вывести список родителей, у которых есть несовершеннолетние дети.

4. Вывести информацию о подарках со стоимостью больше указанного числа, отсортированных по дате.

Вариант 2

1. Вывести список приборов с указанным типом.

2. Вывести количество отремонтированных приборов и общую стоимость ремонтов у указанного мастера.

3. Вывести список владельцев приборов и количество их обращений, отсортированный по количеству обращений по убыванию.

4. Вывести информацию о мастерах с разрядом больше указанного числа или с датой приема на работу меньше указанной даты.

Вариант 3

2. Вывести список кодов продаж, по которым продано цветов на сумму больше указанного числа.

3. Вывести дату продажи, сумму, продавца и цветок по указанному коду продажи.

4. Вывести список цветов и сорт для цветов с высотой больше указанного числа или цветущий.

Вариант 4

1. Вывести список лекарств с указанным показанием к применению.

2. Вывести список дат поставок, по которым продано больше указанного числа одноименного лекарства.

3. Вывести дату поставки, сумму, ФИО руководителя от поставщика и название лекарства по коду поступления больше указанного числа.

Вариант 5

2. Вывести список списанного оборудования по указанной причине.

3. Вывести дату поступления, название оборудования, ФИО ответственного и дату списания для оборудования, списанного в указанный период.

4. Вывести список оборудования с указанным типом или с датой поступления больше определенного значения

Вариант 6

1. Вывести список блюд с весом больше указанного числа.

2. Вывести список продуктов, в названии которых встречается указанный фрагмент слова.

3. Вывести объем продукта, название блюда, название продукта с кодом блюда от указанного начального значения по определенному конечному значению.

4. Вывести порядок приготовления блюда и название блюда с количеством углеводов больше определенного значения или количеством калорий больше указанного значения.

Вариант 7

1. Вывести список сотрудников с указанной должностью.

3. Вывести дату регистрации, тип документа, ФИО регистратора и название организации для документов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных документов с определенным типом документа или с датой регистрации больше указанного значения.

Вариант 8

1. Вывести список сотрудников с указанной причиной увольнения.

3. Вывести дату регистрации, причину увольнения, ФИО сотрудника для документов, зарегистрированных в указанный период.

Вариант 9

1. Вывести список сотрудников, бравших отпуск указанного типа.

2. Вывести список документов с датой регистрации в указанный период.

3. Вывести дату регистрации, тип отпуска, ФИО сотрудника для документов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.

Вариант 10

1. Вывести список сотрудников с указанной должностью.

2. Вывести список документов, в содержании которых встречается указанный фрагмент слова.

3. Вывести дату регистрации, тип документа, ФИО отправителя и название организации для документов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа меньше определенного значения.

Вариант 11

1. Вывести список сотрудников, назначенных на указанную должность.

2. Вывести список документов с датой регистрации в указанный период.

3. Вывести дату регистрации, должность, ФИО сотрудника для документов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.

Вариант 12

3. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированный по количеству обращений по убыванию.

Вариант 13

1. Вывести список оборудования с указанным типом. 2. Вывести список оборудования, которое списал определенный сотрудник.

3. Вывести количество списанного оборудования, сгруппированного по типам оборудования.

4. Вывести информацию о сотрудниках с датой приема на работу больше определенной даты.

Вариант 14

1. Вывести список цветков с указанным типом листа.

2. Вывести список кодов поступлений, по которым продано цветов на суммы больше определенного значения.

3. Вывести дату поступления, сумму, названия поставщика и цветов по определенному коду поставщика.

4. Вывести список цветов и сорт для цветов с высотой больше определенного числа или цветущий.

Вариант 15

1. Вывести список клиентов, заехавших в номера в указанный период.

2. Вывести общую сумму оплат за номера для каждого клиента.

3. Вывести дату заезда, тип номера, ФИО клиентов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных клиентов в номерах определенного типа.

Вариант 16

1. Вывести список оборудования с указанным типом.

2. Вывести список оборудования, которое брал в прокат определенный клиент.

3. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированных по количеству обращений по убыванию.

4. Вывести информацию о клиентах, отсортированных по адресам.

Вариант 17

1. Вывести список ценностей с закупочной стоимостью больше определенного значения или сроком гарантии больше указанного числа.

2. Вывести список мест нахождения материальных ценностей, в названии которых встречается указанное слово.

3. Вывести сумму стоимости ценностей с кодом в указанном диапазоне.

4. Вывести список материально ответственных лиц с датой приема на работу в указанном диапазоне.

Вариант 18

1. Вывести список ремонтных работ, выполненных определенным мастером.

2. Вывести список этапов работ, входящих в работы, в названии которых встречается указанное слово.

3. Вывести сумму стоимости этапов ремонтных работ для работ с кодом в указанном диапазоне.

4. Вывести список мастеров с датой приема на работу в указанном диапазоне.

Вариант 19

1. Вывести список лекарств с определенным показанием.

2. Вывести список номеров чеков, по которым продано больше определенного числа лекарств.

3. Вывести дату продажи, сумму, ФИО кассира и лекарство по чеку с указанным номером.

4. Вывести список лекарств и единицы измерения для лекарств с количеством в упаковке больше указанного числа или кодом лекарства меньше определенного значения.

Вариант 20

1. Вывести список сотрудников с указанной должностью.

2. Вывести список документов, в содержании которых встречается указанный фрагмент слова.

3. Вывести дату регистрации, тип документа, ФИО исполнителя и факт исполнения для документов, зарегистрированных в указанный период.

4. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа в определенном диапазоне.