Процедуры
Переменные
Типы данных, определяемые пользователем
Скалярные переменные
Скалярные переменные
Скалярные переменные
Составной оператор присваивания += сложить и присвоить -= вычесть и присвоить *= умножить и присвоить /= разделить и присвоить %= получить остаток от деления и присвоить &= выполнить побитовое И и присвоить ^= выполнить побитовое исключающее ИЛИ и присвоить |= выполнить побитовое ИЛИ и присвоить
SET vs SELECT
Табличные переменные CREATE TYPE Location AS TABLE ( Location. Name VARCHAR(50) , Cost. Rate INT ); DECLARE @table 1 Location; DECLARE @table_var table( id int , name char(20));
Табличные переменные
Табличные переменные
Использование псевдонима
Табличные переменные
Группировка
Условный оператор
Условный оператор
Оператор цикла
Оператор цикла WHILE (SELECT AVG(Price) FROM Product) < $300 BEGIN UPDATE Product SET Price = Price * 2; IF (SELECT MAX(Price) FROM Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much …';
Обработка ошибок
Обработка ошибок
Процедуры
Создание простой процедуры
Изменение простой процедуры
Создание процедуры с удалением
Процедуры: несколько действий
Создание процедуры с параметрами
Вызов процедур
Параметры по умолчанию и внешние
Создание процедуры с параметрами
Параметры: внутренние и внешние CREATE PROCEDURE Example. Proc ( @salary INT OUTPUT, @id INT = 0, @name VARCHAR(32) = '', DECLARE @s int; EXEC Example. Proc @s OUTPUT, 3, ‘any_string‘ EXEC Example. Proc @s OUTPUT
Параметры
Процедура с циклом
Процедура с циклом
Выход из процедуры RETURN
Передача имени таблицы
Имя таблицы – параметр процедуры CREATE PROCEDURE dbo. mysample ( @tabname varchar(50) , @somevalue char(3) ) AS begin declare @sql varchar(400) set @sql='DELETE FROM '+ @tabname + ' where id>'+ CHAR(39) + @somevalue + CHAR(39) exec(@sql); end
SELECT-выражения в блоках
Курсоры
Курсоры
Создание курсора
Курсоры
Виды курсоров
Статический курсор
Создаем статический курсор
Динамический курсор
Создаем динамический курсор
Создаем и открываем курсор
Считываем текущую строку в перменные
Функция @@FETCH_STATUS
Проходим по всему курсору
Закрываем курсор и освобождаем память
Последовательный курсор
Прокручиваемый курсор
Прокручиваемый курсор
Курсоры: усложним