Тест по теме: «Информация
и информационные процессы» 8 класс
Вариант 1
1. Информацию, не
зависящую от личного мнения или суждения, можно назвать:
а) достоверной;
б) актуальной;
в) объективной;
г) полезной;
д) понятной.
2.Информацию, существенную
и важную в настоящий момент, называют:
а) полезной;
б) актуальной;
в) достоверной;
г) объективной;
д) полной.
3.Информацию,
достаточную для решения поставленной задачи, называют:
а) полезной;
б) актуальной;
в) полной;
г) достоверной;
д) понятной.
4.По способу
восприятия информации человеком различают следующие виды информации:
а) текстовую,
числовую, графическую, табличную и пр.;
б) научную,
социальную, политическую, экономическую, религиозную и пр.;
в) обыденную, производственную, техническую,
управленческую;
г) визуальную,
звуковую, тактильную, обонятельную, вкусовую;
д) математическую, биологическую, медицинскую,
психологическую и пр.
5.Визуальной называют
информацию, которая воспринимается человеком посредством:
а) органов зрения;
б) органами осязания
(кожей);
в) органом обоняния;
г) органами слуха;
д) органами
восприятия вкуса.
6.Аудиоинформацией
называют информацию, которая воспринимается посредством:
а) органов зрения;
б) органами осязания
(кожей);
в) органом обоняния;
г) органами слуха;
д) органами
восприятия вкуса.
7.К аудиоинформации
можно отнести информацию, которая передается посредством:
а)переноса вещества;
б)электромагнитных
волн;
в)световых волн;
г)звуковых волн;
д)знаковых моделей.
8.Примером
политической информации может служить:
а) правило в учебнике
родного языка;
б) параграф в
учебнике литературы;
в) статья о
деятельности какой-либо партии в газете;
г) задание по истории
в дневнике;
д) музыкальное
произведение.
9. Что из ниже
перечисленного можно отнести к средствам передачи звуковой (аудио) информации:
а)книга;
б)радио;
в)журнал;
г)плакат;
д)газета.
10. В учебнике по
математике одновременно хранится информация:
а)исключительно
числовая информацию.
б)графическая,
звуковая и числовая;
в)графическая,
текстовая и звуковая;
г)только текстовая
информацию;
д)текстовая,
графическая, числовая.
11. Примером
информационных процессов могут служить:
а)процессы
строительства зданий и сооружений;
б)процессы химической
и механической очистки воды;
в)процессы получения,
поиска, хранения, передачи, обработки и использования информации;
г)процессы
производства электроэнергии;
д)процессы извлечения
полезных ископаемых из недр Земли.
12. Представления
наших древних предков, отраженные в наскальных рисунках, дошли до нас благодаря
носителям информации в виде:
а)магнитного диска;
б)каменной глыбы;
в)электромагнитной
волны;
г)бумаги;
д)акустической волны.
13. Группа школьников
пришла в бассейн, в котором 4 дорожки для плавания. Тренер сообщил, что группа
будет плавать на дорожке №3. Сколько информации получили школьники из этого
сообщения?
14. Сообщение о том,
что ваш друг живет на 10 этаже, несет 4 бита информации. Сколько этажей в доме?
15. Переведите: 2 Кбайт=? Байт
4
Мбайт=? Бит
3,5
Гигабайт=? Кбайт
146512
бит = ? байт
414777
бит = ? Кбайт
16. Алфавит некоторой
знаковой системы состоит из 128 символов. Какое количество информации будет
содержать предложение из 56 символов ? Ответ записать в байтах
17. Каждый символ
закодирован одним байтом. Оцените информационный объем следующего предложения в
этой кодировке: «В одном километре 1000 метров».
а) 16
килобайтов;
б) 32
бита;
в) 256 бит;
г) 16 байтов.
18. Получено сообщение, информационный объем
которого равен 32 битам. Чему равен этот объем в байтах?
19. В процессе игры из барабана вынимают шарики с
номерами. Известно, что информационное сообщение о номере шарика несет 7 битов
информации. Определите количество шариков в барабане.
20. Шахматная доска состоит из 64 полей: 8
столбцов на 8 строк. Какое минимальное количество бит потребуется для
кодирования координат одного шахматного поля?
21. Рассказ, набранный на компьютере,
содержит 10 страниц, на каждой странице 32 строки, в каждой строке 64 символа. Определите
информационный объём рассказа в Кбайтах, если каждый символ кодируется 16 битами.
22. Сколько символов содержит
сообщение, записанное с помощью 16-символьного алфавита, если объем его составил
1/16 Мбайт?
23. В одном из изданий книги Л.Н.
Толстого «Война и Мир» 1024 страницы. Какой объем памяти (в Мбайтах) заняла бы
эта книга, если бы Лев Николаевич набирал ее на компьютере, где каждый символ
занимает 8 бит памяти? На одной странице помещается 64 строки, а в строке
помещается 64 символа.
Тест по теме: «
Информация и информационные процессы» 8 класс
Вариант 2
1.Информацию,
отражающую истинное положение дел, называют:
а)понятной;
б)достоверной;
в)объективной;
г)полной;
д)полезной.
2.Информацию, с
помощью которой можно решить поставленную задачу, называют:
а)понятной;
б)актуальной;
в)достоверной;
г)полезной;
д)полной.
3.Информацию,
изложенную на доступном для получателя языке, называют:
а)полной;
б)полезной;
в)актуальной;
г)достоверной;
д)понятной.
4.Известно, что наибольший объем информации
человек получает при помощи:
а)органов слуха;
б)органов зрения;
в)органов осязания;
г)органов обоняния;
д)вкусовых
рецепторов.
5.К визуальной можно
отнести информацию, которую получает человек воспринимая:
а)запах духов;
б)графические
изображения;
в)раскаты грома;
г)вкус яблока;
д)ощущение холода.
6.К визуальной можно
отнести информацию, которую получает человек воспринимая:
а)запах духов;
б)графические
изображения;
в)раскаты грома;
г)вкус яблока;
д)ощущение холода.
7.По форме представления информацию можно условно разделить
на следующие виды:
а) социальную, политическую, экономическую,
техническую, религиозную и пр.;
б) текстовую, числовую, символьную, графическую,
табличную и пр.;
в) обыденную, научную, производственную,
управленческую;
г) визуальную,
звуковую, тактильную, обонятельную, вкусовую;
д) математическую, биологическую, медицинскую,
психологическую и пр.
8.Примером текстовой
информации может служить:
а)таблица умножения
на обложке школьной тетради;
б)иллюстрация в
книге;
в)правило в учебнике
родного языка;
г)фотография;
д)музыкальное
произведение.
9.Что из ниже
перечисленного можно отнести к средствам хранения звуковой (аудио) информации:
а)учебник по истории;
б)вывеска с названием
магазина;
в)журнал;
г)кассета с
классической музыкой;
д)газета.
10. Примером хранения
числовой информации может служить:
а)разговор по
телефону;
б)иллюстрация в
книге;
в)таблица значений тригонометрических функций;
г)текст песни;
д)графическое
изображение на экране компьютера.
11.По области применения
информацию можно условно
разделить на:
а)текстовую,
числовую, графическую, табличную и пр.;
б)социальную, политическую, экономическую,
религиозную и пр.;
в)визуальную, звуковую,
тактильную, обонятельную, вкусовую;
г)бытовую, научную,
производственную, техническую, управленческую и пр.;
д)математическую, биологическую, медицинскую,
психологическую и пр.
12. Записная книжка
обычно используется с целью:
а)обработки
информации;
б)хранения
информации;
в)передачи
информации;
г)хранения, обработки
и передачи информации;
д)защиты информации
от несанкционированного использования.
13. Была получена телеграмма: «Встречайте, вагон №7».
Известно, что в составе поезда 16 вагонов. Какое количество информации было
получено?
14. Сообщение о том, что Петя живет во втором подъезде,
несет 3 бита информации. Сколько подъездов в доме?
15. Переведите: 5 Кбайт=? Байт
2
Мбайт=? Бит
1,5
Гигабайт=? Кбайт
12456
бит = ? байт
451045
бит = ? Кбайт
16. Алфавит некоторой знаковой системы состоит из 256
символов. Какое количество информации будет содержать предложение из 40
символов? Ответ записать в байтах.
17. Каждый символ закодирован одним байтом.
Оцените информационный объем следующего предложения в этой кодировке: «В
одном килограмме 1000 грамм».
а) 16
килобайтов;
б) 256
бит;
в) 32 бита;
г) 16 байтов.
18. Получено сообщение, информационный объем
которого равен 64 битам. Чему равен этот объем в байтах?
19. В коробке лежат разноцветные карандаши,
сообщение о том, что достали красный карандаш, несет 5 бит информации.
Сколько всего карандашей?
20. Производится бросание симметричной
четырехгранной пирамидки. Какое количество информации мы получим в зрительном
сообщении о ее падении на одну из граней?
21. Рассказ, набранный на компьютере, содержит 4 страницы,
на каждой странице 48 строк, в каждой строке 64 символа. Определите информационный
объём рассказа в Кбайтах, если каждый символ кодируется 8 битами.
22. Сообщение содержит 256 символов и занимает
объем 1/8 Кбайт информации. Какова мощность использованного алфавита?
23. В одном из изданий книги М.А. Булгакова
«Мастер и Маргарита» 256 страницы. Какой объем памяти (в Мбайтах) заняла бы эта
книга, если бы Михаил Афанасьевич набирал ее на компьютере, где каждый символ
занимает 16 бит памяти? На одной странице помещается 64 строки, а в строке
помещается 64 символа.
Здравствуйте, в этой статье мы постараемся ответить на вопрос: «Информационный объем статьи 60 кбайт сколько страниц». Также Вы можете бесплатно проконсультироваться у юристов онлайн прямо на сайте.
Студенты педагогического института организовали эстрадный квартет. Михаил играе т на саксофоне. Пианист учится на географическом факультете. Ударника зовут не Валерием, а студента географического факультета зовут не Леонидом. Михаил учится не на историческом факультете. Андрей не пианист и не биолог. Валерий учится не на физическом факультете, а ударник — не на историческом.
Статья, набранная на компьютере, содержит 48 страниц, на каждой странице 40 строк, в каждой строке 64 символа.
Объем памяти, занимаемый текстом
Современный компьютер может обрабатывать числовую, текстовую, графическую, звуковую и видео информацию. Все эти виды информации в компьютере представлены в двоичном коде, т. е. используется всего два символа 0 и 1. Связано это с тем, что удобно представлять информацию в виде последовательности электрических импульсов: импульс отсутствует (0), импульс есть (1).
Статья, набранная на компьютере, содержит 8 страниц, на каждой странице 40 строк, в каждой строке 64 символа.
Задача №3. Сколько символов содержит сообщение, записанное с помощью 16-символьного алфавита, если его объем составляет 1/16 Мб?
Сообщение, информационный объём которого равен 10 Кбайт, занимает 8 страниц по 32 строки, в каждой из которых записано 40 символов. Сколько символов в алфавите, на котором записано это сообщение? В кодировке Unicode на каждый символ отводится два байта. Определи информационный объём слова из (12) символов в этой кодировке. Ответ запиши в битах.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи — смело задавайте вопросы!
В одной из кодировок Unicode каждый символ кодируется 16 битами. Определите размер следующего предложения в данной кодировке.
С клавиатуры вводится число. Является ли оно нечетным двухзначным. Если да, то написать «является» и найти произведение его цифр.
В одном из вариантов кодировки Unicode на каждый символ отводится 2 байта. Определите информационный объём в битах слова из 24 символов в этой кодировке.
Решение задач по теме «Количество информации»
Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант — оцените ответы на похожие вопросы. Но если вдруг и это не помогло — задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Раскройте скобки, вставьте пропущенные буквы и знаки препинания. 1. Главным инженером была дана разн…рядка на проведение ремонтных работ технического оборудования. 2.
Помогите пожалуйста, буду очень благодарен ! Надо написать программу на языке Паскаля. Спортсменам фигуристам шесть судей выставляют оценки.
Добро пожаловать на сайт Ответы Онлайн, где вы можете задавать вопросы и получать ответы от других членов сообщества.
Мощность алфавита равна 256. ИКТ (ЕГЭ)
Какова мощность алфавита, который широко распространен для представления информации текстовой информации в компьютере?
Программное обеспечение персонального компьютера. Компьютерный интеллект. О работе процессора компьютера. Оперативная память. Периферийные устройства персонального компьютера. Что значит «по умолчанию». Старый компьютер. Старый ноутбук. Вредная компьютерная грамотность.
Вычеслите неизвестную величину по седующи данным: А)3 5-тых площади комноты состовляют 30 М2. Площадь комноты………………………….
В 19 веке появилась идея разностной машины Чарльза Бэббиджа. Аналитическая машина Бэббиджа стала прообразом первого компьютера. Первым программистом была женщина, графиня Ада Лавлейс. Она написала первую компьютерную программу. Герман Холлерит в 1884 году оформил патент на первый табулятор.
Если ответ на твой вопрос отсутствует, или он не полный, то рекомендуем найти информацию через поиск на сайте.
Слово Трассирующий 1. определить, к какой части речи относится слово; 2. выделить основу и окончание слова, если это изменяемая часть речи; 3. выделить корень, подобрав родственные слова; 4.
Некоторые системы ограничивают максимальный объем текста, которое может храниться в базе, не по количеству символов, а по количеству байт. Этот инструмент поможет вам посчитать информационный объем введенного текста в байтах.
Задача №2. Информационное сообщение объемом 4 Кбайта содержит 4096 символов. Сколько символов содержит алфавит, при помощи которого было записано это сообщение?
Задание № Информационный объём статьи 60 Кбайт. Сколько страниц займет статья, если на одной странице электронного документа помещается 24 строки по 80 символов, а каждый символ представлен в одной из кодировок Unicode (занимает 16 бит памяти) .
Информационный объем статьи набранный на компьютере составляет 48 Кбайта, Определите сколько страниц содержит статья если известно что на каждой странице 48 строк, в каждой строке 64 символа и каждый символ кодируется 16 битами (кодировка Unicode).
Спрашивает Левитцкий Саша. Информационный объём статьи 60 Кбайт. Сколько страниц займет статья, если на одной странице электрон. ного документа помещается 24 строки по 80 символов, а каждый символ представлен кодировке Unicode (в кодировке Unicode каждый.
ОГЭ информатика. Задание №1 с решениями и пояснениями.
Информационный объём статьи 60 Кбайт. Сколько страниц займет статья, если на одной странице электронного документа помещается 24 строки по 80 символов, а каждый символ представлен кодировке. 05/02/ · Задание № Информационный объём статьи 60 Кбайт. Сколько страниц займет статья, если на одной странице электронного документа помещается 24 строки по 80 символов, а каждый символ представлен.
В одном из изданий книги Л.H. Толстого «Война и Мир» 1024 страницы. Какой объём памяти (в Мбайтах) заняла бы эта книга, если бы Лев Николаевич набирал её на компьютере в кодировке КОИ-8? На одной странице помещается 64 строки, а в строке помещается 64 символа.
Информационный объем статьи 60 кбайт. сколько страниц займёт статья, если на одной странице помещает…
Если нет флешки, нет внешнего жесткого диска, то сгодится архив данных на CD-/DVD-дисках, который можно сделать с помощью программы WinRAR. Описана архивация данных с помощью встроенного средства «Архивация и восстановление». Если архивы есть, то это здорово, но нужно ли архивы удалять?
Разблокировка Windows. Винлокер, троян, ботнет, фишинг, шпионские программы, вирусный софт, сайты-лохотроны, вирус-шифровальщик WannaCry, майнинг-вирус. Аккумуляторная батарея ноутбука, электропитание ноутбука. На компьютере постоянно сбивается время. Нужны ли два антивируса на компьютере. Бесплатная лечащая утилита Dr Web CureIt. Зачем компьютер подключают через сетевой фильтр?
На сайте собраны калькуляторы, конвертеры, формулы, справочники, таблицы и много другой полезной и нужной информации для учёбы и работы.
Измерить в байтах объём текстовой информации в книге из 258 страниц, если на одной странице размещается в среднем 45 строк по 60 символов (включая пробелы).
Самый простой способ сделать расчеты в сети — это использовать подходящие онлайн инструменты. Воспользуйтесь поиском, чтобы найти подходящий инструмент на нашем сайте.
Регистрация на сайте РЖД. Покупаем билет на поезд на сайте РЖД. Калькулятор для вычисления даты поездки. Билет РЖД за бонусы. Ищем билет РЖД в личном кабинете «Мои заказы». Возврат электронного билета РЖД. Невозвратные билеты. Предоплаченное питание. WiFi в поездах РЖД. О вокзалах.
Если тебя не устраивает ответ или его нет, то попробуй воспользоваться поиском на сайте и найти похожие ответы по предмету Информатика.
Рассказ, набранный на компьютере, содержит 4 страницы, на каждой странице 48 строк, в каждой строке 64 символа. Информационный объём рассказа занял в памяти компьютера 9 Кбайт. Определите, сколько бит памяти используется для кодирования каждого символа, если известно, что для представления каждого символа отводится одинаковый объём памяти. Выпишите из атласа в тетрадь название 5 европейских государств в алфавитном порядке. укажите столицу каждого государства. затем перепишите список этих государств так, чтобы их столицы были расположены в алфавитном порядке.
Конспект «Алфавитный подход к определению количества информации»
Лошадиная сила — единица мощности. Она примерно равна значению в 75 кгс/м/с., что соответствует усилию, которое необходимо затратить для подъёма груза в 75 кг. на высоту одно метра за одну секунду.
Количество теплоты – это физическая величина, показывающая, какая энергия передана телу в результате теплообмена.
Мореплаватель — имя существительное, употребляется в мужском роде. К нему может быть несколько синонимов.
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Задачи на расчёт информационного объёма текстовых сообщений
В одном из изданий книги Л.H. Толстого «Война и Мир» 1024 страницы. Какой объём памяти (в Мбайтах) заняла бы эта книга, если бы Лев Николаевич набирал её на компьютере в кодировке KOI-8? На одной странице помещается 64 строки, а в строке помещается 64 символа. Каждый символ в кодировке KOI-8 занимает 8 бит памяти.
Сколько страниц займёт статья, если на одной странице электронного документа помещается 24 строки по 80 символов, а каждый символ представлен в одной из кодировок Unicode (занимает 16 бит памяти) .
Скратким ответом. какое количество байтов будет передаваться за одну секунду по каналу передачи информации с пропускной мбит/с?
Похожие записи:
Информатика
8 класс
«Административная контрольная
работа за 1 полугодие»
Главная
цель урока: проверка уровня
усвоения знаний по теме «Математические основы информатики» .
Цели:
Обучающие:
Обобщение знаний, а также практических умений и навыков учащихся при работе с
изученными ими информационными технологиями.
Развивающие:
Развитие познавательного интереса, творческой активности учащихся, повышение
интереса к изучению предмета.
Воспитательные:
воспитание информационной культуры, умения самостоятельно искать пути решения
поставленной задачи и отстаивать свою точку зрения.
Задачи:
·
развитие познавательного
интереса учащихся
·
систематизация и обобщение
полученных на предыдущих уроках знаний и навыков
·
развитие уверенности в
собственных силах
·
практическое применение
информационных технологий при решении творческих задач
·
развитие приемов умственной
деятельности (обобщение, анализ, сравнение).
Ход урока:
I.
Организационный
момент.
II.
Актуализация знаний
уч-ся.
III.
Основная часть.
Контрольный тест по информатике за I
полугодие (8 класс)
I вариант
Часть А. Выбери один правильный ответ:
1. Сколько бит памяти компьютера займёт слово
«кибернетика»
1) 11 бит; 2)
80 бит; З) 88 бит; 4)
8 бит
2. Алфавит племени Мульти состоит из 16 букв. Какое
количество информации несёт одна буква этого алфавита?
1) 4 бита; 2)
8 бит; З) 4 байта; . 4)
8 байт
3.
Информацию, отражающую истинное положение дел, называют:
1) понятной; 2)
достоверной; З) объективной; 4) полной
4. Какое устройство ПК предназначено для вывода
информации?
1) Процессор; 2)
Монитор; З) Клавиатура; 4)Сканер
5. Считая, что каждый символ кодируется 1 байтом,
оцените информационный объем следующего предложения в кодировке КОИ-8: «Я помню
чудное мгновенье…»
1) 27 байт; 2)
54 байта; З) 216 байт; 4)
108 байт
6. Пользователь работал с каталогом С:ФизикаЗадачиКинематика.
Сначала он поднялся на один уровень вверх, затем еще раз поднялся на один
уровень вверх и после этого спустился в каталог Экзамен. Запишите полный
путь каталога, в котором оказался пользователь.
1) С:Физика
2) С:Экзамен
З) С:ФизикаЭкзамен
4) С:ФизикаЗадачиЭкзамен
7. Для хранения информации используют: 1)
принтер; 2) монитор; З) диск; 4)
автомобиль
8. Название, какого устройства пропущено в общей схеме
компьютера?
1) Модем; 2)
Внешняя память; З) Оперативная память; 4)
Дисковод.
Часть В. Ответом на задание этой части будет некоторое
пропущенное слово или комбинация букв и (или) чисел.
9.
Устройствами вывода информации являются:
а) принтер; б) монитор; в)
клавиатура; г) мышь; д) световое
перо; е) сканер
ж) колонки; з) модем; и)
микрофон; к) наушники; л) плоттер
10.
Установите соответствие:
1. 2. З. 4. | А. Замок. bmp Б. Дворцы. гаг В. Лето. mрЗ Г. Письмо. doc |
Часть С. Напишите развёрнутое
решение предложенного задания:
11. Текст занимает 4 полных страницы. На каждой
странице размещается З0 строк по 60 символов в строке. Какой объем оперативной
памяти (в байтах) займет этот текст?
12. Переведите
числа из одной системы счисления в другую:
1)
3710 →А2;
2)
1011012 →А10;
3)
12510 →А8;
4)
5178 →А10.
II вариант
Часть А. Выбери один правильный ответ:
1.
Сколько бит памяти компьютера займет слово «информатика»?
1) 11 бит; 2)
80 бит; 3) 8 бит; 4)
88 бит
2. Алфавит племени Пульти состоит из 32 букв. Какое
количество информации несёт одна буква этого алфавита?
1) 5 бит; 2)
8 бит; 3) 5 байт; 4)
8 байт.
3.
Информацию, не зависящую от чужого мнения, называют:
1) достоверной; 2)
актуальной; 3) объективной; 4)
полезной
4. Какое устройство ПК предназначено для ввода
информации?
1) Процессор; 2)
Монитор; 3) Клавиатура; 4)
Принтер
5.
Считая, что каждый символ кодируется 16 битами, оцените информационный объем
следующего предложения в кодировке Unicode: «Я помню чудное мгновенье…»
1) 27 бит; 2)
432 бита; 3) 216 бит; 4)
108 бит
6. Пользователь работал с каталогом С:АрхивРисункиНатюрморты.
Сначала он поднялся на один уровень вверх, затем еще раз поднялся на один
уровень вверх и после этого опустился в каталог Фотографии. Укажите
полный путь каталога, в котором оказался пользователь.
1) С:АрхивРисункиФотографии;
2) С:АрхивФотографии;
3) С: ФотографииАрхив;
4) С:Фотографии.
7.
Выберите лишнее устройство:
1) жесткий диск; 2) магнитная
лента; 3) дискета; 4)принтер
8. Название, какого устройства пропущено в общей схеме
компьютера?
1) Модем; 2) Внешняя
память; 3) Дисковод; 4)
Контролер устройства вывода.
Часть В. Ответом на задание этой части будет некоторое
пропущенное слово или комбинация букв и (или) чисел.
9. Устройствами ввода информации являются:
а) принтер; б) монитор; в)
клавиатура; г) мышь; д) световое перо; е) сканер;
ж) колонки; з) модем; и)
микрофон; к) наушники; л) плоттер;
10.
Установите соответствие:
1. Текстовый файл 2. Графический файл 3. Архивный файл 4. 3вуковой файл | А. Б. В. Г. |
Часть С. Напишите развёрнутое
решение предложенного задания:
11. Книга, набранная с помощью компьютера, содержит 50
страниц; на каждой странице — 40 строк, в каждой строке — 60 символов. Каков
объём информации (в байтах) в книге?
12. Переведите
числа из одной системы счисления в другую:
1)
12510 →А2;
2)
10110112 →А10;
3)
31510 →А8;
4)
10108 →А10.
IV.
Подведение итогов
V.
Рефлексия
VI.
Домашнее задание
- Статья
- Чтение занимает 30 мин
Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных
Создает хранимую процедуру Transact-SQL или общеязыковой среды выполнения (CLR) в следующих компонентах: SQL Server, База данных SQL Azure и Система платформы аналитики (PDW). Хранимые процедуры похожи на процедуры из других языков программирования в том, что они могут:
- принимать входные параметры и возвращать вызывающей процедуре или пакету ряд значений в виде выходных параметров;
- содержать программные инструкции, которые выполняют операции в базе данных, в том числе вызывающие другие процедуры;
- возвращать значение состояния вызывающей процедуре или пакету, таким образом передавая сведения об успешном или неуспешном завершении (и причины последнего).
Используйте эту инструкцию для создания постоянной процедуры в текущей базе данных или временной процедуры в базе данных tempdb
.
Примечание
В этом разделе рассматривается интеграция среды CLR .NET Framework с SQL Server. Интеграция со средой CLR не применяется к База данных SQL Azure.
Перейдите к разделу Простые примеры, чтобы пропустить сведения о синтаксисе и просмотреть краткий пример базовой хранимой процедуры.
Синтаксические обозначения в Transact-SQL
Синтаксис
-- Transact-SQL Syntax for Stored Procedures in SQL Server and Azure SQL Database
CREATE [ OR ALTER ] { PROC | PROCEDURE }
[schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE AS Clause ]
-- Transact-SQL Syntax for CLR Stored Procedures
CREATE [ OR ALTER ] { PROC | PROCEDURE }
[schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH EXECUTE AS Clause ]
AS { EXTERNAL NAME assembly_name.class_name.method_name }
[;]
-- Transact-SQL Syntax for Natively Compiled Stored Procedures
CREATE [ OR ALTER ] { PROC | PROCEDURE } [schema_name.] procedure_name
[ { @parameter data_type } [ NULL | NOT NULL ] [ = default ]
[ OUT | OUTPUT ] [READONLY]
] [ ,... n ]
WITH NATIVE_COMPILATION, SCHEMABINDING [ , EXECUTE AS clause ]
AS
{
BEGIN ATOMIC WITH (set_option [ ,... n ] )
sql_statement [;] [ ... n ]
[ END ]
}
[;]
<set_option> ::=
LANGUAGE = [ N ] 'language'
| TRANSACTION ISOLATION LEVEL = { SNAPSHOT | REPEATABLE READ | SERIALIZABLE }
| [ DATEFIRST = number ]
| [ DATEFORMAT = format ]
| [ DELAYED_DURABILITY = { OFF | ON } ]
-- Transact-SQL Syntax for Stored Procedures in Azure Synapse Analytics
-- and Parallel Data Warehouse
-- Create a stored procedure
CREATE { PROC | PROCEDURE } [ schema_name.] procedure_name
[ { @parameter data_type } [ OUT | OUTPUT ] ] [ ,...n ]
AS
{
[ BEGIN ] sql_statement [;][ ,...n ] [ END ]
}
[;]
Аргументы
OR ALTER
Область применения: Azure База данных SQL, SQL Server (начиная с SQL Server 2016 (13.x); с пакетом обновления 1 (SP1)).
Изменяет процедуру, если она уже существует.
schema_name
Имя схемы, которой принадлежит процедура. Процедуры привязаны к схеме. Если имя схемы не указано при создании процедуры, то автоматически назначается схема по умолчанию для пользователя, который создает процедуру.
procedure_name
Имя процедуры. Имена процедур должны соответствовать требованиям, предъявляемым к идентификаторам, и должны быть уникальными в схеме.
Внимание!
При задании имен для процедур не следует пользоваться префиксом sp_ . Этим префиксом в SQL Server обозначаются системные процедуры. Использование этого префикса может нарушить работу кода приложения, если обнаружится системная процедура с таким же именем.
Локальную или глобальную временную процедуру можно создать, указав один символ номера (#) перед procedure_name ( #procedure_name) для локальных временных процедур и два символа номера для глобальных временных процедур ( ##procedure_name). Локальная временная процедура видима только соединению, которое создало процедуру, и удаляется, когда это соединение закрывается. Глобальная временная процедура доступна для всех соединений и удаляется при завершении последнего сеанса, в котором она использовалась. Для процедур CLR нельзя задавать временные имена.
Полное имя процедуры или глобальной временной процедуры не может содержать более 128 символов (с учетом символов ##). Полное имя локальной временной процедуры с учетом символа # не может содержать более 116 символов.
; число
Применимо к: SQL Server 2008 и выше, а также База данных SQL Azure.
Необязательный целочисленный аргумент, используемый для группирования одноименных процедур. Все сгруппированные процедуры можно удалить, выполнив одну инструкцию DROP PROCEDURE.
Примечание
В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
В нумерованных процедурах нельзя использовать определяемые пользователем типы данных xml и CLR, и их нельзя использовать в структуре плана.
@ параметр
Параметр, объявленный в процедуре. Укажите имя параметра, начинающееся со знака @ . Имя параметра должно соответствовать правилам для идентификаторов. Параметры являются локальными в пределах процедуры; в разных процедурах могут быть использованы одинаковые имена параметров.
Можно объявить от 1 до 2100 параметров. При выполнении процедуры значение каждого из объявленных параметров должно быть указано пользователем, если для параметра не определено значение по умолчанию или значение не задано равным другому параметру. Если процедура содержит возвращающие табличное значение параметры, а в вызове отсутствует параметр, передается пустая таблица. Параметры могут использоваться только в качестве выражений-констант; они не могут использоваться вместо имен таблиц, столбцов или других объектов базы данных. Дополнительные сведения см. в разделе EXECUTE (Transact-SQL).
Параметры не могут быть объявлены, если указан параметр FOR REPLICATION.
[ type_schema_name . ] data_type
Тип данных параметра и схема, к которой принадлежит этот тип.
Рекомендации по процедурам Transact-SQL
- Все типы данных Transact-SQL можно использовать в качестве параметров.
- Для создания возвращающих табличное значение параметров можно использовать определяемый пользователем табличный тип. Возвращающие табличное значение параметры могут быть только ВХОДНЫМИ и должны сопровождаться ключевым словом READONLY. Дополнительные сведения см. в статье Использование возвращающих табличные значения параметров (ядро СУБД).
- Типы данных cursor могут быть только ВЫХОДНЫМИ параметрами и должны сопровождаться ключевым словом VARYING.
Рекомендации по процедурам CLR
-
Все собственные типы данных SQL Server, имеющие эквиваленты в управляемом коде, можно использовать в качестве параметров. Дополнительные сведения о соответствии между типами среды CLR и системными типами данных SQL Server см. в разделе Сопоставление данных параметров CLR. Дополнительные сведения о системных типах данных SQL Server и их синтаксисе см. в разделе Типы данных (Transact-SQL).
-
Возвращающие табличное значение типы данных и типы данных cursor не могут служить параметрами.
-
Если тип параметра является определяемым пользователем типом данных CLR, то необходимо иметь связанное с этим типом разрешение EXECUTE.
VARYING
Указывает результирующий набор, поддерживаемый в качестве выходного параметра. Этот параметр динамически формируется процедурой, и его содержимое может различаться. Область применения — только параметры cursor. Этот параметр недопустим для процедур CLR.
default
Значение по умолчанию для параметра. Если для некоторого параметра определено значение по умолчанию, то процедуру можно выполнить без указания значения этого параметра. Значение по умолчанию должно быть константой или может быть равно NULL. Значение константы может иметь вид шаблона, что позволяет использовать ключевое слово LIKE при передаче параметра в процедуру.
Значения по умолчанию записываются в столбец sys.parameters.default
только для процедур CLR. В случае параметров процедуры Transact-SQL этот столбец содержит значения NULL.
OUT | OUTPUT
Показывает, что параметр процедуры является выходным. Используйте выходные параметры для возврата значений коду, вызвавшему процедуру. Параметры text, ntext и image не могут быть выходными, если процедура не является процедурой CLR. Выходным параметром с ключевым словом OUTPUT может быть заполнитель курсора, если процедура не является процедурой CLR. Возвращающий табличное значение тип данных не может быть указан в качестве выходного параметра процедуры.
READONLY
Указывает, что параметр не может быть обновлен или изменен в тексте процедуры. Если тип параметра является возвращающим табличное значение типом, то должно быть указано ключевое слово READONLY.
RECOMPILE
Показывает, что компонент Компонент Database Engine не кэширует план запроса для этой процедуры, что вызывает ее компиляцию при каждом выполнении. Дополнительные сведения о причинах принудительной повторной компиляции см. в разделе Перекомпиляция хранимой процедуры. Этот параметр нельзя использовать, если указано предложение FOR REPLICATION, а также для процедур CLR.
Чтобы Компонент Database Engine удалил планы отдельных запросов в процедуре, следует использовать указание запроса RECOMPILE в определении запроса. Дополнительные сведения см. в разделе Указания запросов (Transact-SQL).
ENCRYPTION
Область применения: SQL Server (SQL Server 2008 и выше), База данных SQL Azure.
Показывает, что SQL Server выполняет запутывание исходного текста инструкции CREATE PROCEDURE. Результат запутывания не виден непосредственно ни в одном представлении каталога SQL Server. Пользователи, не имеющие доступа к системным таблицам или файлам баз данных, не смогут получить запутанный текст, однако этот текст доступен привилегированным пользователям, которые либо смогут обращаться к системным таблицам через порт DAC, либо будут иметь непосредственный доступ к файлам баз данных. Кроме того, пользователи, имеющие право на подключение отладчика к серверному процессу, могут получить расшифрованный текст процедуры из памяти во время выполнения. Дополнительные сведения о доступе к метаданным системы см. в статье Настройка видимости метаданных.
Этот параметр недопустим для процедур CLR.
Процедуры, созданные с этим аргументом, не могут быть опубликованы как часть репликации SQL Server.
EXECUTE AS предложение
Определяет контекст безопасности, в котором должна быть выполнена процедура.
Для скомпилированных в собственном коде хранимых процедур, начиная с SQL Server 2016 (13.x); и в База данных SQL Azure, отсутствуют ограничения на предложение EXECUTE AS. В SQL Server 2014 (12.x) предложения SELF, OWNER и user_name поддерживаются с помощью хранимых процедур, скомпилированных в собственном коде.
Дополнительные сведения см. в разделе Предложение EXECUTE AS (Transact-SQL).
FOR REPLICATION
Область применения: SQL Server (SQL Server 2008 и выше), База данных SQL Azure.
Указывает, что процедура создается для репликации. Следовательно, ее нельзя выполнять на подписчике. Процедура, созданная с параметром FOR REPLICATION, используется в качестве фильтра и выполняется только в процессе репликации. Параметры не могут быть объявлены, если указан параметр FOR REPLICATION. Параметр FOR REPLICATION нельзя указывать для процедур CLR. Параметр RECOMPILE не учитывается для процедур, созданных с параметром FOR REPLICATION.
Процедура FOR REPLICATION
имеет тип объекта RF в представлениях sys.objects
и sys.procedures
.
{ [ BEGIN ] sql_statement [;] [ …n ] [ END ] }
Одна или несколько инструкций Transact-SQL, составляющих текст процедуры. Инструкции можно заключить в необязательные ключевые слова BEGIN и END. Дополнительные сведения см. далее в разделах «Рекомендации», «Общие замечания» и «Ограничения».
EXTERNAL NAME assembly_name . class_name . method_name
Применимо к: SQL Server 2008 и выше, База данных SQL.
Указывает метод сборки .NET Framework для процедуры CLR, на которую создается ссылка. Аргумент class_name должен быть допустимым идентификатором SQL Server и существовать как класс в сборке. Если класс имеет квалифицированное имя пространства имен, которое использует точку ( . ) для разделения частей пространства имен, имя класса разделено скобками ( [] ) или кавычками ( «» ). Указанный метод класса должен быть статическим.
По умолчанию SQL Server не производит выполнение кода CLR. Можно создавать, изменять и удалять объекты базы данных со ссылками на модули среды CLR, но SQL Server не выполняет их до тех пор, пока не будет включен параметр clr enabled. Для включения параметра используйте хранимую процедуру sp_configure.
Примечание
Процедуры CLR не поддерживаются в автономной базе данных.
ATOMIC WITH
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Указывает атомарное выполнение хранимой процедуры. Изменения принимаются, либо все изменения откатываются с исключением. Блок ATOMIC WITH требуется для скомпилированных в собственном коде хранимых процедур.
Если процедура возвращает результат (явно с помощью инструкции RETURN либо неявно путем завершения выполнения), выполненная работа фиксируется процедурой. Если процедура выдает ошибку, выполняется откат работы, выполненной процедурой.
Параметр XACT_ABORT по умолчанию имеет значение ON внутри блока ATOMIC и не может быть изменен. Параметр XACT_ABORT указывает, выполняет ли SQL Server автоматический откат текущей транзакции, если инструкция языка Transact-SQL вызывает ошибку выполнения.
Следующие параметры SET всегда имеют значение ON внутри блока ATOMIC; параметры нельзя изменить.
- CONCAT_NULL_YIELDS_NULL
- QUOTED_IDENTIFIER, ARITHABORT
- NOCOUNT
- ANSI_NULLS
- ANSI_WARNINGS
Параметры SET нельзя изменить внутри блоков ATOMIC. Параметры SET пользовательского сеанса не используются в области скомпилированных в собственном коде хранимых процедур. Эти параметры фиксируются во время компиляции.
Операции BEGIN, ROLLBACK и COMMIT нельзя использовать внутри блока ATOMIC.
Для каждой скомпилированной в собственном коде хранимой процедуры существует один блок ATOMIC. Блок входит во внешнюю область процедуры. Блоки не могут быть вложенными. Дополнительные сведения о скомпилированных в собственном коде хранимых процедурах см. в разделе Хранимые процедуры, скомпилированные в собственном коде.
NULL | NOT NULL
Определяет, допустимы ли для параметра значения NULL. Значение по умолчанию — NULL.
NATIVE_COMPILATION
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Указывает, что процедура компилируется в собственном режиме. NATIVE_COMPILATION, SCHEMABINDING и EXECUTE AS можно указывать в любом порядке. Дополнительные сведения см. в статье Хранимые процедуры, скомпилированные в собственном коде.
SCHEMABINDING
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Гарантирует, что таблицы, на которые ссылается процедура, нельзя удалить или изменить. SCHEMABINDING требуется для хранимых процедур, скомпилированных в собственном коде. Дополнительные сведения см. в статье Хранимые процедуры, скомпилированные в собственном коде. Ограничения SCHEMABINDING такие же, как и для определяемых пользователем функций. Дополнительные сведения см. в подразделе SCHEMABINDING раздела CREATE FUNCTION (Transact-SQL).
LANGUAGE = [N] ‘language’
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Эквивалентно параметру сеанса SET LANGUAGE (Transact-SQL). LANGUAGE = [N] ‘language’ (обязательный параметр).
TRANSACTION ISOLATION LEVEL
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Требуется для хранимых процедур, скомпилированных в собственном коде. Указывает уровень изоляции транзакции для хранимой процедуры. Существуют следующие варианты выбора.
Дополнительные сведения об этих параметрах см. в разделе SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
REPEATABLE READ
Указывает, что инструкции не могут считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы. Если другая транзакция изменяет данные, считанные текущей транзакцией, текущая транзакция завершится с ошибкой.
SERIALIZABLE
Указывает следующее.
- Инструкции не могут считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы.
- Если другая транзакция изменяет данные, считанные текущей транзакцией, текущая транзакция завершится с ошибкой.
- Если другая транзакция вставляет новые строки со значениями ключа, которые входят в диапазон ключей, считываемых любой инструкцией текущей транзакции, текущая транзакция завершается ошибкой.
SNAPSHOT
Указывает, что данные, считанные любым оператором в транзакции, согласованы с версией данных, которые существовали в начале транзакции.
DATEFIRST = number
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Указывает первый день недели в виде числа от 1 до 7. DATEFIRST — необязательный параметр. Если он не указан, то значение выводится из указанного языка.
Дополнительные сведения см. в разделе SET DATEFIRST (Transact-SQL).
DATEFORMAT = format
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Указывает порядок составляющих даты (месяца, дня и года) для интерпретации символьных строк date, smalldatetime, datetime, datetime2 и datetimeoffset. DATEFORMAT — необязательный параметр. Если он не указан, то значение выводится из указанного языка.
Дополнительные сведения см. в разделе SET DATEFORMAT (Transact-SQL).
DELAYED_DURABILITY = { OFF | ON }
Применимо к: SQL Server 2014 (12.x) и выше, а также База данных SQL Azure.
Фиксации транзакции SQL Server могут быть полностью устойчивыми, использовать настройки по умолчанию или быть отложенными устойчивыми.
Дополнительные сведения см. в разделе Управление устойчивостью транзакций.
Простые примеры
Чтобы помочь вам приступить к работе, рассмотрим два простых примера. SELECT DB_NAME() AS ThisDB;
возвращает имя текущей базы данных.
Можно создать оболочку этой инструкции в хранимой процедуре, например:
CREATE PROC What_DB_is_this
AS
SELECT DB_NAME() AS ThisDB;
Вызов хранимой процедуры с помощью инструкции: EXEC What_DB_is_this;
Немного более сложным вариантом является предоставление входного параметра для повышения уровня гибкости процедуры. Пример:
CREATE PROC What_DB_is_that @ID INT
AS
SELECT DB_NAME(@ID) AS ThatDB;
Укажите идентификационный номер базы данных при вызове процедуры. Например, EXEC What_DB_is_that 2;
возвращает tempdb
.
Множество других примеров см.в разделе Примеры в конце этой статьи.
Рекомендации
Это неполный список рекомендаций, однако данные советы помогут повысить производительность процедур.
- Начинайте текст процедуры с инструкции SET NOCOUNT ON (она должна следовать сразу за ключевым словом AS). В этом случае отключаются сообщения, отправляемые SQL Server клиенту после выполнения любых инструкций SELECT, INSERT, UPDATE, MERGE и DELETE. При этом для ясности создаются минимальные выходные данные. Но на доступном сегодня оборудовании не наблюдается ощутимого повышения производительности. Дополнительные сведения см. в разделе SET NOCOUNT (Transact-SQL).
- При создании или упоминании объектов базы данных в процедуре используйте имена схем. Отсутствие необходимости поиска в нескольких схемах экономит время обработки, затрачиваемое компонентом Компонент Database Engine на разрешение имен объектов. Кроме того, предотвращаются проблемы с разрешениями и доступом, вызываемые назначением схемы по умолчанию для пользователя, когда объекты создаются без указания схемы.
- Не используйте функции-оболочки для столбцов, указанных в предложениях WHERE и JOIN. В таком случае столбцы становятся недетерминированными, и обработчик запросов не может использовать индексы.
- Не используйте скалярные функции в инструкциях SELECT, возвращающих множество строк данных. Поскольку скалярная функция должна применяться к каждой строке, инструкция будет выполняться как обработка на уровне строк, что приводит к снижению производительности.
- Не используйте
SELECT *
. Вместо этого указывайте имена нужных столбцов. Это предотвращает некоторые ошибки компонента Компонент Database Engine, которые останавливают выполнение процедуры. Например, инструкцияSELECT *
, возвращающая данные из таблицы с 12 столбцами, а затем вставляющая эти данные во временную таблицу с 12 столбцами, выполняется успешно, пока не изменится число или порядок столбцов в любой из этих таблиц. - Не выполняйте обработку или передачу слишком большого объема данных. Как можно раньше ограничивайте область результатов в коде процедуры, чтобы все последующие операции, выполняемые процедурой, работали с минимально возможным набором данных. Отправляйте в клиентское приложение только необходимые данные. Это более эффективно, чем передача дополнительных данных по сети, при которой клиентскому приложению приходится обрабатывать необоснованно большие результирующие наборы.
- Используйте явные транзакции, указывая ключевые слова BEGIN/COMMIT TRANSACTION, и по возможности сокращайте транзакции. Длинные транзакции увеличивают время блокировки записей и повышают шанс возникновения взаимоблокировок.
- Используйте функцию Transact-SQL TRY…CATCH для обработки ошибок в пределах процедуры. В конструкцию TRY…CATCH можно инкапсулировать весь блок инструкций Transact-SQL. Это не только снижает расход ресурсов, но также повышает точность отчетов об ошибках и значительно сокращает труд программиста.
- Используйте ключевое слово DEFAULT для всех столбцов таблицы, на которые ссылаются инструкции Transact-SQL CREATE TABLE и ALTER TABLE в тексте процедуры. Это исключает передачу значений NULL в столбцы, которые не допускают значений NULL.
- Используйте ключевые слова NULL и NOT NULL для каждого столбца во временной таблице. Если атрибуты NULL или NOT NULL не указаны в инструкции CREATE TABLE или ALTER TABLE, то способ назначения этих атрибутов столбцам компонентом Компонент Database Engine определяется параметрами ANSI_DFLT_ON и ANSI_DFLT_OFF. Если в контексте соединения выполняется процедура, где значения этих параметров отличаются от значений в соединении, где была создана процедура, то столбцы таблицы, созданной для второго соединения, могут отличаться по признаку допустимости значений NULL и работать иначе. Если атрибут NULL или NOT NULL явно задан для каждого столбца, то временные таблицы создаются с одним и тем же признаком допустимости значений NULL во всех соединениях, где выполняется процедура.
- Используйте инструкции изменения, которые преобразуют значения NULL и исключают из запросов строки, содержащие значения NULL. Учтите, что в Transact-SQL значение NULL не означает пустое значение или отсутствие значения. Это заполнитель для неизвестного значения, который может вызвать непредвиденные результаты, особенно в случае запроса результирующих наборов или использования функций AGGREGATE.
- Используйте оператор UNION ALL вместо операторов UNION и OR, если нет необходимости получить уникальные значения. Для оператора UNION ALL требуется меньше затрат на обработку, поскольку из результирующего набора не исключаются повторы.
Стандартный максимальный размер процедуры не установлен.
Переменные, указанные в процедуре, могут определяться пользователем или быть системными, такими как @@SPID.
При выполнении процедуры в первый раз она компилируется, при этом определяется оптимальный план получения данных. При последующих вызовах процедуры можно снова использовать уже созданный план, если он еще находится в кэше планов компонента Компонент Database Engine.
Процедуры могут выполняться автоматически при запуске SQL Server. Они должны быть созданы системным администратором в базе данных master
и выполняться в контексте предопределенной роли сервера sysadmin в фоновом процессе. Они не могут иметь ни входных, ни выходных параметров. Дополнительные сведения см. в разделе Выполнение хранимых процедур.
Процедуры называются вложенными, если одна процедура вызывает другую или выполняет управляемый код по ссылке на подпрограмму, тип или статистическое выражение среды CLR. Процедуры и ссылки на управляемый код могут быть вложены не более чем на 32 уровня. Уровень вложенности увеличивается на единицу, когда вызванная процедура или управляемый код начинает выполняться, и уменьшается на единицу, когда их выполнение заканчивается. Методы, вызываемые из управляемого кода, не учитываются в этом ограничении. Однако когда хранимая процедура CLR выполняет операции доступа к данным через управляемый поставщик SQL Server, при переходе из управляемого кода в SQL добавляется дополнительный уровень вложенности.
Если уровень вложенности превышает максимальное значение, вся цепочка вызовов заканчивается ошибкой. Получить уровень вложенности текущей выполняемой хранимой процедуры можно через функцию @@NESTLEVEL.
Совместимость
При создании или изменении процедуры Компонент Database Engine компонент Transact-SQL сохраняет значения SET QUOTED_IDENTIFIER и SET ANSI_NULLS. Эти первоначальные значения используются при выполнении процедуры. Таким образом, пока процедура выполняется, любые значения SET QUOTED_IDENTIFIER и SET ANSI_NULLS, задаваемые во время клиентского сеанса, не учитываются.
Другие параметры SET, такие как SET ARITHABORT, SET ANSI_WARNINGS или SET ANSI_PADDINGS, при создании или изменении процедуры не сохраняются. Если логика процедуры зависит от конкретного значения параметра, включите в начало процедуры инструкцию SET, чтобы гарантировать нужное значение. Если инструкция SET выполняется из процедуры, то значение действует только до завершения процедуры. После этого оно принимает прежнее значение, которое имело место при вызове процедуры. Это позволяет клиентам задавать нужные им параметры без влияния на логику процедуры.
Внутри процедуры может быть указана любая инструкция SET, за исключением SET SHOWPLAN_TEXT и SET SHOWPLAN_ALL. Эти инструкции могут встречаться только в пакете. Выбранный параметр SET остается в силе до завершения процедуры, после чего восстанавливает прежнее значение.
Примечание
Значение SET ANSI_WARNINGS не учитывается при передаче параметров процедуре или определяемой пользователем функции, а также при объявлении и задании переменных в инструкции пакета. Например, если объявить переменную как char(3), а затем присвоить ей значение длиннее трех символов, данные будут усечены до размера переменной, а инструкция INSERT или UPDATE завершится без ошибок.
Ограничения
Инструкцию CREATE PROCEDURE нельзя объединять с другими инструкциями Transact-SQL в одном пакете.
Следующие инструкции нельзя использовать нигде в тексте хранимой процедуры.
CREATE | SET | USE |
---|---|---|
CREATE AGGREGATE | SET SHOWPLAN_TEXT | USE database_name |
CREATE DEFAULT | SET SHOWPLAN_XML | |
CREATE RULE | SET PARSEONLY | |
CREATE SCHEMA | SET SHOWPLAN_ALL | |
CREATE или ALTER TRIGGER | ||
CREATE или ALTER FUNCTION | ||
CREATE или ALTER PROCEDURE | ||
CREATE или ALTER VIEW |
Процедура может ссылаться на таблицы, которые еще не существуют. Во время создания хранимой процедуры выполняется только проверка синтаксиса. Процедура не компилируется до первого выполнения. Ссылки на все упоминаемые в процедуре объекты разрешаются только во время компиляции. Таким образом, ничто не мешает создать синтаксически правильную процедуру, ссылающуюся на несуществующие таблицы, однако если эти таблицы отсутствуют во время выполнения хранимой процедуры, она завершится с ошибкой.
Имя функции нельзя указать в качестве значения по умолчанию для параметра или в качестве значения, передаваемого для параметра во время выполнения процедуры. Однако функцию можно передать как переменную, как показано в следующем примере.
-- Passing the function value as a variable.
DECLARE @CheckDate DATETIME = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
GO
Если процедура вносит изменения на удаленном экземпляре SQL Server, то откат этих изменений будет невозможен. Удаленные процедуры не участвуют в транзакциях.
Чтобы компонент Компонент Database Engine правильно выбрал перегруженную в .NET Framework версию метода, в предложении EXTERNAL NAME необходимо указывать метод следующим образом.
- Он должен быть объявлен как статический метод.
- Он должен принимать то же количество параметров, что и процедура.
- Типы параметров метода должны быть совместимы с типами данных соответствующих параметров процедуры SQL Server. Сведения о соответствии между типами данных SQL Server и .NET Framework см. в разделе Сопоставление данных параметров CLR.
В следующей таблице перечислены представления каталога и динамические административные представления, которые могут использоваться для получения сведений о хранимых процедурах.
Для оценки размера скомпилированной процедуры следует использовать следующие счетчики системного монитора.
Имя объекта системного монитора | Имя счетчика системного монитора |
---|---|
SQLServer: объект Plan Cache | Коэффициент попадания в кэш |
Страницы кэша | |
Счетчик объектов в кэше* |
*Эти счетчики доступны для разных категорий объектов кэша, включая нерегламентированные запросы Transact-SQL, подготовленные запросы Transact-SQL, процедуры, триггеры и т. д. Дополнительные сведения см. в статье SQL Server, объект Plan Cache.
Безопасность
Разрешения
Требуется разрешение CREATE PROCEDURE на базу данных и разрешение ALTER на схему, в которой создается процедура, либо членство в предопределенной роли базы данных db_ddladmin.
Для хранимых процедур CLR пользователь должен владеть сборкой, на которую ссылается предложение EXTERNAL NAME, или иметь разрешение REFERENCES на эту сборку.
CREATE PROCEDURE и таблицы, оптимизированные для памяти
Доступ к оптимизированным для памяти таблицам можно осуществлять из традиционных и скомпилированных в собственном коде хранимых процедур. В большинстве случаев использование собственных процедур является более эффективным способом. Дополнительные сведения см. в статье Хранимые процедуры, скомпилированные в собственном коде.
В следующем примере показано создание скомпилированной в собственном коде хранимой процедуре, имеющей доступ к таблице, оптимизированной для памяти dbo.Departments
.
CREATE PROCEDURE dbo.usp_add_kitchen @dept_id INT, @kitchen_count INT NOT NULL
WITH EXECUTE AS OWNER, SCHEMABINDING, NATIVE_COMPILATION
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')
UPDATE dbo.Departments
SET kitchen_count = ISNULL(kitchen_count, 0) + @kitchen_count
WHERE ID = @dept_id
END;
GO
Процедуру, созданную без параметра NATIVE_COMPILATION, нельзя преобразовать в хранимую процедуру, скомпилированную в собственном коде.
Описание возможностей программирования в откомпилированных в собственном коде хранимых процедурах, поддерживаемой контактной зоны запроса и операторов см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.
Примеры
Базовый синтаксис
В примерах из этого раздела показаны основные возможности инструкции CREATE PROCEDURE с применением минимально необходимого синтаксиса.
A. Создание простой процедуры Transact-SQL
В следующем примере создается хранимая процедура, возвращающая из представления всех сотрудников (с указанием имени и фамилии), их должности и названия отделов в базе данных AdventureWorks2012. Эта процедура не использует параметры. Далее в примере рассматриваются три метода выполнения процедуры.
CREATE PROCEDURE HumanResources.uspGetAllEmployees
AS
SET NOCOUNT ON;
SELECT LastName, FirstName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment;
GO
SELECT * FROM HumanResources.vEmployeeDepartment;
Процедуру uspGetEmployees
можно выполнять следующими способами.
EXECUTE HumanResources.uspGetAllEmployees;
GO
-- Or
EXEC HumanResources.uspGetAllEmployees;
GO
-- Or, if this procedure is the first statement within a batch:
HumanResources.uspGetAllEmployees;
Б. Возвращение более чем одного результирующего набора
Следующая процедура возвращает два результирующих набора.
CREATE PROCEDURE dbo.uspMultipleResults
AS
SELECT TOP(10) BusinessEntityID, Lastname, FirstName FROM Person.Person;
SELECT TOP(10) CustomerID, AccountNumber FROM Sales.Customer;
GO
В. Создание хранимой процедуры CLR
В следующем примере создается процедура GetPhotoFromDB
, ссылающаяся на метод GetPhotoFromDB
класса LargeObjectBinary
из сборки HandlingLOBUsingCLR
. Перед созданием процедуры сборка HandlingLOBUsingCLR
регистрируется в локальной базе данных.
Применимо к: SQL Server 2008 и выше, База данных SQL (если используется сборка, созданная с помощью assembly_bits).
CREATE ASSEMBLY HandlingLOBUsingCLR
FROM 'MachineNameHandlingLOBUsingCLRbinDebugHandlingLOBUsingCLR.dll';
GO
CREATE PROCEDURE dbo.GetPhotoFromDB
(
@ProductPhotoID INT
, @CurrentDirectory NVARCHAR(1024)
, @FileName NVARCHAR(1024)
)
AS EXTERNAL NAME HandlingLOBUsingCLR.LargeObjectBinary.GetPhotoFromDB;
GO
Передача параметров
Примеры в этом разделе показывают, как использовать входные и выходные параметры для передачи значений в хранимую процедуру и возврата значений из нее.
Г. Создание простой процедуры со входными параметрами
В следующем примере показано создание хранимой процедуры, которая возвращает сведения об определенном сотруднике по переданным значениям фамилии и имени сотрудника. Эта процедура принимает только полные соответствия передаваемым параметрам.
IF OBJECT_ID ( 'HumanResources.uspGetEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastName NVARCHAR(50),
@FirstName NVARCHAR(50)
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment
WHERE FirstName = @FirstName AND LastName = @LastName;
GO
Процедуру uspGetEmployees
можно выполнять следующими способами.
EXECUTE HumanResources.uspGetEmployees N'Ackerman', N'Pilar';
-- Or
EXEC HumanResources.uspGetEmployees @LastName = N'Ackerman', @FirstName = N'Pilar';
GO
-- Or
EXECUTE HumanResources.uspGetEmployees @FirstName = N'Pilar', @LastName = N'Ackerman';
GO
-- Or, if this procedure is the first statement within a batch:
HumanResources.uspGetEmployees N'Ackerman', N'Pilar';
Д. Использование процедуры с параметрами-шаблонами
В следующем примере показано создание хранимой процедуры, которая возвращает сведения о сотрудниках по переданным полным или частичным значениям имени и фамилии. Эта процедура ищет соответствие полученным параметрам, а если параметры не предоставлены, то используется шаблон, заданный по умолчанию (фамилии, начинающиеся с буквы D
).
IF OBJECT_ID ( 'HumanResources.uspGetEmployees2', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees2;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees2
@LastName NVARCHAR(50) = N'D%',
@FirstName NVARCHAR(50) = N'%'
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment
WHERE FirstName LIKE @FirstName AND LastName LIKE @LastName;
Процедуру uspGetEmployees2
можно выполнять во многих сочетаниях. Здесь показаны лишь некоторые из возможных сочетаний.
EXECUTE HumanResources.uspGetEmployees2;
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'Wi%';
-- Or
EXECUTE HumanResources.uspGetEmployees2 @FirstName = N'%';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'[CK]ars[OE]n';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'Hesse', N'Stefen';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'H%', N'S%';
Е. Использование выходных параметров (OUTPUT)
В следующем примере создается процедура uspGetList
. Она возвращает список продуктов, цена на которые не превышает указанную сумму. Данный пример поясняет использование нескольких инструкций SELECT
и нескольких параметров OUTPUT
. Параметры OUTPUT предоставляют внешней процедуре, пакету или нескольким инструкциям Transact-SQL доступ к значениям, заданным во время выполнения процедуры.
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL
DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product VARCHAR(40)
, @MaxPrice MONEY
, @ComparePrice MONEY OUTPUT
, @ListPrice MONEY OUT
AS
SET NOCOUNT ON;
SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice;
-- Populate the output variable @ListPprice.
SET @ListPrice = (SELECT MAX(p.ListPrice)
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice);
-- Populate the output variable @compareprice.
SET @ComparePrice = @MaxPrice;
GO
Процедура uspGetList
возвращает из базы данных Adventure Works список товаров (велосипедов) стоимостью менее $700
. Параметры OUTPUT``@Cost
и @ComparePrices
используются с языком управления выполнением для вывода информации в окне Сообщения.
Примечание
Переменная OUTPUT должна быть определена при создании процедуры и при использовании переменной. Имена параметра и переменной могут быть разными, однако типы данных и порядок расположения параметров должны совпадать, если только не используется @ListPrice
= variable.
DECLARE @ComparePrice MONEY, @Cost MONEY;
EXECUTE Production.uspGetList '%Bikes%', 700,
@ComparePrice OUT,
@Cost OUTPUT
IF @Cost <= @ComparePrice
BEGIN
PRINT 'These products can be purchased for less than
$'+RTRIM(CAST(@ComparePrice AS VARCHAR(20)))+'.'
END
ELSE
PRINT 'The prices for all products in this category exceed
$'+ RTRIM(CAST(@ComparePrice AS VARCHAR(20)))+'.';
Частичный результирующий набор:
Product List Price
-------------------------- ----------
Road-750 Black, 58 539.99
Mountain-500 Silver, 40 564.99
Mountain-500 Silver, 42 564.99
...
Road-750 Black, 48 539.99
Road-750 Black, 52 539.99
(14 row(s) affected)
These items can be purchased for less than $700.00.
Ж. Использование возвращающих табличные значения параметров
В следующем примере показано использование возвращающего табличное значение параметра для вставки в таблицу нескольких строк. В примере создается тип параметра, объявляется табличная переменная для ссылки, заполняется список параметров, а затем значения передаются в хранимую процедуру. Хранимая процедура использует эти значения для вставки в таблицу нескольких строк.
/* Create a table type. */
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50)
, CostRate INT );
GO
/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE usp_InsertProductionLocation
@TVP LocationTableType READONLY
AS
SET NOCOUNT ON
INSERT INTO [AdventureWorks2012].[Production].[Location]
([Name]
, [CostRate]
, [Availability]
, [ModifiedDate])
SELECT *, 0, GETDATE()
FROM @TVP;
GO
/* Declare a variable that references the type. */
DECLARE @LocationTVP
AS LocationTableType;
/* Add data to the table variable. */
INSERT INTO @LocationTVP (LocationName, CostRate)
SELECT [Name], 0.00
FROM
[AdventureWorks2012].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO
З. Использование параметра-курсора OUTPUT
В следующем примере используется параметр курсора OUTPUT для возврата курсора, локального относительно процедуры, в вызывающий пакет, процедуру или триггер.
Сначала следует создать процедуру, объявляющую и открывающую курсор для таблицы Currency
:
CREATE PROCEDURE dbo.uspCurrencyCursor
@CurrencyCursor CURSOR VARYING OUTPUT
AS
SET NOCOUNT ON;
SET @CurrencyCursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT CurrencyCode, Name
FROM Sales.Currency;
OPEN @CurrencyCursor;
GO
Затем выполним пакет, в котором объявляется локальная переменная-курсор, выполняется процедура, назначающая курсор локальной переменной, и извлекаются строки из курсора.
DECLARE @MyCursor CURSOR;
EXEC dbo.uspCurrencyCursor @CurrencyCursor = @MyCursor OUTPUT;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
FETCH NEXT FROM @MyCursor;
END;
CLOSE @MyCursor;
DEALLOCATE @MyCursor;
GO
Изменение данных с помощью хранимой процедуры
Примеры в этом разделе показывают, как производится вставка или изменение данных в таблицах и представлениях путем включения инструкции языка DML в определение процедуры.
И. Использование UPDATE в хранимой процедуре
В следующем примере инструкция UPDATE используется в хранимой процедуре. Процедура принимает один входной параметр @NewHours
и один выходной параметр @RowCount
. Значение параметра @NewHours
используется в инструкции UPDATE для обновления столбца VacationHours
в таблице HumanResources.Employee
. Выходной параметр @RowCount
используется для возврата значения числа задействованных строк в локальную переменную. Выражение CASE используется в предложении SET для условного определения значения, которое задано для столбца VacationHours
. Если для сотрудника применяется почасовая ставка оплаты (SalariedFlag
= 0), то в столбце VacationHours
устанавливается текущее количество часов плюс значение, заданное в @NewHours
. В противном случае в столбце VacationHours
указывается значение, заданное в @NewHours
.
CREATE PROCEDURE HumanResources.Update_VacationHours
@NewHours SMALLINT, @Rowcount INT OUTPUT
AS
SET NOCOUNT ON;
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN SalariedFlag = 0 THEN VacationHours + @NewHours
ELSE @NewHours
END
)
WHERE CurrentFlag = 1;
SET @Rowcount = @@rowcount;
GO
DECLARE @Rowcount INT
EXEC HumanResources.Update_VacationHours 40, @Rowcount OUTPUT
PRINT @Rowcount;
Обработка ошибок
Примеры в этом разделе показывают, как производится обработка ошибок, которые могут возникнуть при выполнении хранимых процедур.
К. Использование конструкции TRY…CATCH
В следующем примере конструкция TRY…CATCH используется для возврата сведений об ошибках во время выполнения хранимой процедуры.
CREATE PROCEDURE Production.uspDeleteWorkOrder ( @WorkOrderID INT )
AS
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION
-- Delete rows from the child table, WorkOrderRouting, for the specified work order.
DELETE FROM Production.WorkOrderRouting
WHERE WorkOrderID = @WorkOrderID;
-- Delete the rows from the parent table, WorkOrder, for the specified work order.
DELETE FROM Production.WorkOrder
WHERE WorkOrderID = @WorkOrderID;
COMMIT
END TRY
BEGIN CATCH
-- Determine if an error occurred.
IF @@TRANCOUNT > 0
ROLLBACK
-- Return the error information.
DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT;
SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY();
RAISERROR(@ErrorMessage, @ErrorSeverity, 1);
END CATCH;
GO
EXEC Production.uspDeleteWorkOrder 13;
GO
/* Intentionally generate an error by reversing the order in which rows
are deleted from the parent and child tables. This change does not
cause an error when the procedure definition is altered, but produces
an error when the procedure is executed.
*/
ALTER PROCEDURE Production.uspDeleteWorkOrder ( @WorkOrderID INT )
AS
BEGIN TRY
BEGIN TRANSACTION
-- Delete the rows from the parent table, WorkOrder, for the specified work order.
DELETE FROM Production.WorkOrder
WHERE WorkOrderID = @WorkOrderID;
-- Delete rows from the child table, WorkOrderRouting, for the specified work order.
DELETE FROM Production.WorkOrderRouting
WHERE WorkOrderID = @WorkOrderID;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
-- Determine if an error occurred.
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
-- Return the error information.
DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT;
SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY();
RAISERROR(@ErrorMessage, @ErrorSeverity, 1);
END CATCH;
GO
-- Execute the altered procedure.
EXEC Production.uspDeleteWorkOrder 15;
GO
DROP PROCEDURE Production.uspDeleteWorkOrder;
Запутывание определений процедур
Примеры в этом разделе показывают, как применить запутывание к определению хранимой процедуры.
Л. Использование параметра WITH ENCRYPTION
В следующем примере создается процедура HumanResources.uspEncryptThis
.
Применимо к: SQL Server 2008 и выше, база данных SQL.
CREATE PROCEDURE HumanResources.uspEncryptThis
WITH ENCRYPTION
AS
SET NOCOUNT ON;
SELECT BusinessEntityID, JobTitle, NationalIDNumber,
VacationHours, SickLeaveHours
FROM HumanResources.Employee;
GO
Параметр WITH ENCRYPTION
запутывает определение процедуры при запросе системного каталога или использовании функций метаданных, как показано в следующих примерах.
Запустите sp_helptext
.
EXEC sp_helptext 'HumanResources.uspEncryptThis';
Результирующий набор:
The text for object 'HumanResources.uspEncryptThis' is encrypted.
Напрямую выполните запрос к представлению каталога sys.sql_modules
:
SELECT definition FROM sys.sql_modules
WHERE object_id = OBJECT_ID('HumanResources.uspEncryptThis');
Результирующий набор:
definition
--------------------------------
NULL
Примечание
Azure Synapse Analytics не поддерживает системную хранимую процедуру sp_helptext
. Вместо нее используйте представление каталога объектов sys.sql_modules
.
Принудительная перекомпиляция хранимой процедуры
В примерах этого раздела показано использование предложения WITH RECOMPILE для принудительной перекомпиляции процедуры при каждом ее выполнении.
М. Использование параметра WITH RECOMPILE
Предложение WITH RECOMPILE
полезно, если передаваемые в процедуру параметры являются нетипичными или если новый план выполнения процедуры не следует кэшировать или хранить в памяти.
IF OBJECT_ID ( 'dbo.uspProductByVendor', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.uspProductByVendor;
GO
CREATE PROCEDURE dbo.uspProductByVendor @Name VARCHAR(30) = '%'
WITH RECOMPILE
AS
SET NOCOUNT ON;
SELECT v.Name AS 'Vendor name', p.Name AS 'Product name'
FROM Purchasing.Vendor AS v
JOIN Purchasing.ProductVendor AS pv
ON v.BusinessEntityID = pv.BusinessEntityID
JOIN Production.Product AS p
ON pv.ProductID = p.ProductID
WHERE v.Name LIKE @Name;
Задание контекста безопасности
В примерах этого раздела предложение EXECUTE AS используется для задания контекста безопасности, в котором выполняется хранимая процедура.
Н. Использование предложения EXECUTE AS
Следующий пример показывает использование предложения EXECUTE AS для указания контекста безопасности, в котором может выполняться процедура. В данном случае параметр CALLER
указывает, что процедура может выполняться в контексте вызывающего ее пользователя.
CREATE PROCEDURE Purchasing.uspVendorAllInfo
WITH EXECUTE AS CALLER
AS
SET NOCOUNT ON;
SELECT v.Name AS Vendor, p.Name AS 'Product name',
v.CreditRating AS 'Rating',
v.ActiveFlag AS Availability
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor pv
ON v.BusinessEntityID = pv.BusinessEntityID
INNER JOIN Production.Product p
ON pv.ProductID = p.ProductID
ORDER BY v.Name ASC;
GO
О. Создание пользовательских наборов разрешений
В следующем примере предложение EXECUTE AS используется для создания пользовательских разрешений для операции базы данных. Некоторые операции (например, TRUNCATE TABLE) не имеют предоставляемых разрешений. Включив инструкцию TRUNCATE TABLE в хранимую процедуру и указав, что эта процедура должна выполняться от имени пользователя, у которого есть разрешения на изменение таблицы, можно предоставить разрешение на усечение таблицы пользователю с разрешением EXECUTE на эту процедуру.
CREATE PROCEDURE dbo.TruncateMyTable
WITH EXECUTE AS SELF
AS TRUNCATE TABLE MyDB..MyTable;
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
П. Создание хранимой процедуры, которая выполняет инструкцию SELECT
В этом примере показан основной синтаксис для создания и выполнения процедуры. При выполнении пакета CREATE PROCEDURE должна быть первой инструкцией. Например, чтобы создать следующую хранимую процедуру в AdventureWorksPDW2012, сначала следует задать контекст базы данных, а затем выполнить инструкцию CREATE PROCEDURE.
-- Uses AdventureWorksDW database
--Run CREATE PROCEDURE as the first statement in a batch.
CREATE PROCEDURE Get10TopResellers
AS
BEGIN
SELECT TOP (10) r.ResellerName, r.AnnualSales
FROM DimReseller AS r
ORDER BY AnnualSales DESC, ResellerName ASC;
END
;
GO
--Show 10 Top Resellers
EXEC Get10TopResellers;
См. также:
- ALTER PROCEDURE (Transact-SQL)
- Язык управления потоком (Transact-SQL)
- Курсоры
- Типы данных (Transact-SQL)
- DECLARE @local_variable (Transact-SQL)
- DROP PROCEDURE (Transact-SQL)
- EXECUTE (Transact-SQL)
- EXECUTE AS (Transact-SQL)
- Хранимые процедуры (компонент Database Engine)
- sp_procoption (Transact-SQL)
- sp_recompile (Transact-SQL)
- sys.sql_modules (Transact-SQL)
- sys.parameters (Transact-SQL)
- sys.procedures (Transact-SQL)
- sys.sql_expression_dependencies (Transact-SQL)
- sys.assembly_modules (Transact-SQL)
- sys.numbered_procedures (Transact-SQL)
- sys.numbered_procedure_parameters (Transact-SQL)
- OBJECT_DEFINITION (Transact-SQL)
- Создание хранимой процедуры
- Использование параметров, возвращающих табличные значения (ядро СУБД)
- Функция динамического управления sys.dm_sql_referenced_entities (Transact-SQL)
- sys.dm_sql_referencing_entities (Transact-SQL)
Новикова Елена Юрьевна
25.10.2021.
Тест. Информатика, 6 класс
Внимание! Все тесты в этом разделе разработаны пользователями сайта для собственного
использования.
Администрация сайта не
проверяет возможные ошибки,
которые могут встретиться в тестах.
Проверка знаний по информатике за первую четверть.
Вопрос 1
Закончите предложение: «Любая часть окружающей действительности, воспринимаемая человеком как единое целое, называется…»
Варианты ответов
- понятием
- объектом
- предметом
- системой
Вопрос 2
Укажите отношение для пары «процессор и системный блок»
Варианты ответов
- является элементом множества
- входит в состав
- является причиной
Вопрос 3
Информация, хранящаяся в долговременной памяти как единое целое и обозначенная именем — это…
Варианты ответов
- текст
- файл
- папка
Вопрос 4
Наименьшая единица измерения информации
Варианты ответов
- байт
- бит
- килобайт
Вопрос 5
Сколько бит в 1 байте? (Запишите только число)
Вопрос 6
Укажите верные утверждения
Варианты ответов
- В одной папке могут содержаться 2 файла с одинаковым именем и расширением.
- Внутри папки не могут содержаться другие папки (каталоги).
- Для удобства хранения и быстрого поиска файлы группируются в папки (каталоги).
- Во время работы на компьютере файлы и папки можно модифицировать, копировать, перемещать, удалять.
Вопрос 7
Укажите верные выражения
Варианты ответов
- 1 бит=8 байт
- 1 Кбайт=1024 байта
- 1 Гбайт=1024 Мбайт
- 1 Мбайт=1024 байт
Вопрос 8
Сколько места в памяти компьютера будет занимать слово «Информатика»?
Варианты ответов
- 11 байт
- 8 байт
- 11 бит
- 1 Кбайт
Вопрос 9
Какими свойствами характеризуется файл? (выберите все варианты ответа)
Варианты ответов
- размер
- тип
- действия
- дата создания
- величина
Вопрос 10
Переведите (запишите только число)
0,5 Кбайт = … байт
Вопрос 11
Каждый ученик 6 класса является читателем, по крайней мере, одной из двух библиотек: школьной и районной. Из них 15 человек берут книги только в школьной библиотеке, 10 — только в районной, 5 – и в школьной, и в районной. Сколько учеников в 6 классе?
Ответьте на вопрос, используя диаграмму Эйлера (запишите только число)
Вопрос 12
Выберите верные утверждения в соответствии с рисунком.
Варианты ответов
- Множество кошки является подмножеством множества Животные
- Множество Животные является подмножеством множества Кошки.
- Множество Вислоухие является подмножеством множества Кошки.
Вопрос 13
Рассказ состоит из 6 страниц, на каждой странице 40 строк, в каждой строке 45 символов. Каков объём информации в рассказе? Ответ записать в байтах (только число)
Вопрос 14
Переведи те (запишите только число)
168 бит = … байт
Вопрос 15
В школе 92 ребёнка. Каждый из них любит печенье или пирожки. Половина детей любит печенье, а 30 человек – печенье и пирожки. Сколько детей любит только пирожки?
Вопрос 16
Слово «библиотека» может быть сохранено в файле размером:
Варианты ответов
- 10 байтов
- 1 Кбайт
- 80 битов
- 80 байтов
Вопрос 17
Выберите лишнее
Варианты ответов
- делимое
- делитель
- произведение
- частное
Вопрос 18
Выберите лишнее
Варианты ответов
- 12
- 72
- 75
- 96
Вопрос 19
Связано понятием является разновидностью множество:
Варианты ответов
- медведей и белых медведей
- деревьев и деревянных изделий
- компьютеров и разработчиков программ
- растений и животных
Вопрос 20
В спортивной секции 30 человек, из них футболом занимаются 21 человек, 19 – играют в хоккей. Сколько человек занимается футболом и играют в хоккей? (Записать число)
Вопрос 21
Все мои подруги выращивают в своих квартирах какие-нибудь растения. Шестеро из них разводят кактусы, а пятеро — фиалки. И только у двоих есть и кактусы и фиалки. Угадайте, сколько у меня подруг? (Запишите только число)
Вопрос 22
Сколько битов в слове «Байт»? (Записать только число)
Вопрос 23
Каждая страница учебника содержит чуть меньше 40 строк, в каждой строке – примерно 60 символов. Учебник состоит из 176 страниц. Определите информационный объем учебника – Информатика 6 класс. Ответ запишите в байтах. (Записать только число)
Вопрос 24
Каждая страница учебника содержит чуть меньше 40 строк, в каждой строке – примерно 60 символов. Учебник состоит из 176 страниц. Определите информационный объем учебника – Информатика 6 класс. Ответ запишите в Кбайт. (Записать только число)