Презентация на тему "Процедуры и функции"

Включить эффекты
1 из 44
Смотреть похожие
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
0.0
0 оценок

Рецензии

Добавить свою рецензию

Аннотация к презентации

Посмотреть и скачать бесплатно презентацию по теме "Процедуры и функции". pptCloud.ru — каталог презентаций для детей, школьников (уроков) и студентов.

  • Формат
    pptx (powerpoint)
  • Количество слайдов
    44
  • Слова
    другое
  • Конспект
    Отсутствует

Содержание

  • Процедуры и функции
    Слайд 1

    Процедуры и функции

  • Слайд 2

    Для реализации логики приложения на стороне базы данных Создание хранимых процедур и функций Создание триггеров

  • Слайд 3
  • Слайд 4

    Вызов встроенной функции

    SELECT SQRT(5)

  • Слайд 5

    Преобразование типов данных

    CAST ( expression AS data_type [ ( length ) ] ) CAST ( $10.50 AS VARCHAR(10) ) CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) CONVERT(VARCHAR(12), GETDATE(), 1) '2'+4

  • Слайд 6

    Примеры

    CAST (expression AS data_type [ (length ) ] ) select cast('12' as int)+4557 select cast(27 as char(2))+'R‘27R select cast(27 as char(1))+'R‘*R

  • Слайд 7

    Код символа

    Select ASCII('A'), ASCII('a')97 65 select CHAR(98)B select CHAR(ASCII('B')+2)D

  • Слайд 8

    Группировка

    BEGIN { sql_statement | statement_block } END

  • Слайд 9

    Условный оператор

    IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]

  • Слайд 10

    Метки

    Определение метки: label: Переход: GOTO label

  • Слайд 11

    Оператор цикл

    WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE } BREAK Приводит к выходу из ближайшего цикла WHILE. CONTINUE Выполняет цикл WHILE для перезагрузки, не учитывая все инструкции, следующие после ключевого слова CONTINUE.

  • Слайд 12

    Выражение CASE

    SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, Name FROM Production.Product ORDER BY ProductNumber;

  • Слайд 13

    SELECT a, CASE WHEN a = 1 THEN b WHEN a=2 THEN c WHEN a>2 THEN b+c END FROM t2

  • Слайд 14

    Обработка исключений

    CREATE TABLE dbo.TestRethrow ( ID INT PRIMARY KEY); BEGIN TRY INSERT dbo.TestRethrow(ID) VALUES(1); -- Force error 2627, Violation of PRIMARY KEY constraint to be raised. INSERT dbo.TestRethrow(ID) VALUES(1); END TRY BEGIN CATCH PRINT 'In catch block.'; THROW; END CATCH;

  • Слайд 15

    Процедуры

    Хранимая процедура – это набор операторов T-SQL, который компилируется системой SQL Server в единый "план исполнения". 

  • Слайд 16

    Переменные

    DECLARE @var_namevar_type, … SET @var_name = var_value; SELECT @var_name;

  • Слайд 17

    Процедуры

    CREATE PROC [ EDURE ] procedure_name    [ { @parameter data_type }         [ = default ] [ OUTPUT ]     ] [ ,...n ] ASsql_statement

  • Слайд 18

    Создание простой процедуры

    CREATE PROCEDURESimpleProcAS UPDATE TOP (5) students SET salary=salary*1.5;

  • Слайд 19

    Изменение простой процедуры

    ALTER PROCEDURESimpleProcAS UPDATE TOP (5) students SET salary=salary*1.5;

  • Слайд 20

    Создание процедуры с удалением

    IF OBJECT_ID ('SimpleProc') IS NOT NULL DROP PROCEDURESimpleProc; CREATE PROCEDURESimpleProcAS UPDATE students SET salary=salary*1.5;

  • Слайд 21

    Процедуры: несколько действий

    CREATE PROCEDUREExampleProcAS BEGIN DECLARE @default_salaryINT SET@default_salary= (SELECT …) END

  • Слайд 22

    Создание процедуры с параметрами

    CREATE PROCEDUREExampleProc ( @id INT, @name VARCHAR(32) ) AS BEGIN DECLARE @default_salaryINT SET @salary = (SELECT …) END

  • Слайд 23

    Вызов процедур

    Без параметровEXECUTESimpleProc EXECSimpleProc С параметрамиEXECUTEExampleProc1, ‘string’

  • Слайд 24

    Параметры по умолчанию и внешние

    CREATE PROCEDUREExampleProc ( @id INT = 0, @name VARCHAR(32) = '', @salary INTOUTPUT ) AS BEGIN DECLARE @default_salaryINT SET @salary = (SELECT …) END

  • Слайд 25

    Создание процедуры с параметрами

    CREATE PROCEDURE GetUnitPrice @prod_idint, @unit_price money OUTPUT AS SELECT @unit_price = UnitPriceFROM Products WHERE ProductID = @prod_id DECLARE @price money EXECUTE GetUnitPrice 77, @price OUTPUT SELECT @price

  • Слайд 26

    Переменные

    CREATE PROCEDUREExampleProc ( @salary INTOUTPUT, @id INT = 0, @name VARCHAR(32) = '', DECLARE @s int; EXEC ExampleProc@s OUTPUT, 3, ‘any_string‘ EXEC ExampleProc@s OUTPUT

  • Слайд 27

    CREATE PROCEDUREExampleProc ( @id INT = 0, @name VARCHAR(32) = '', @salary INTOUTPUT EXEC PROCEDUREExampleProc 3 DECLARE @proc_namevarchar(30) SET @proc_name = 'sp_who' EXEC @proc_name

  • Слайд 28

    Процедура с циклом

    CREATE TABLE mytable ( column1 int, column2 char(10) ) CREATE PROCEDURE InsertRows @start_valueintAS BEGIN DECLARE @loop_counterint, @start intSET @start = @start_value – 1 SET @loop_counter = 0 WHILE (@loop_counter < 5) BEGIN INSERT INTO mytable VALUES (@start + 1, ‘new row’) PRINT (@start) SET @start = @start + 1 SET @loop_counter = @loop_counter + 1 END END

  • Слайд 29

    EXECUTE InsertRows 1 GO SELECT * FROM mytable column1 column2 ----------------------- 1 new row 2 new row 3 new row 4 new row 5 new row

  • Слайд 30

    Выход из процедуры RETURN

    CREATE PROCEDURE GetUnitPrice@prod_idint = NULL AS IF @prod_id IS NULL BEGIN PRINT ‘Enter a product ID number’ RETURN END ELSE …

  • Слайд 31

    SELECT-выражения в блоках

    Должны возвращать только одно значение! SETvar_name = (SELECTcolumn_nameFROM …) При необходимости работать со множеством записей используйте курсор.

  • Слайд 32

    Курсоры

    DECLARE – создание или объявление курсора ; OPEN – открытие курсора, т.е. наполнение его данными; FETCH – выборка из курсораиизменениестрок данных с помощью курсора; CLOSE – закрытие курсора ; DEALLOCATE – освобождение курсора, т.е. удаление курсора как объекта.

  • Слайд 33

    Создание курсора

    DECLARE имя_курсора [INSENSITIVE][SCROLL] CURSOR FOR SELECT_оператор [FOR { READ_ONLY | UPDATE [OF имя_столбца[,...n]]}]

  • Слайд 34

    Курсоры

    DECLAREcursor_nameCURSOR FORselect_statement OPENcursor_name FETCH [NEXT] cursor_name [INTOvariable_list] CLOSEcursor_name DEALLOCATEcursor_name

  • Слайд 35

    Виды курсоров

     последовательные  прокручиваемые Статические Динамические

  • Слайд 36

    Статический курсор

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

  • Слайд 37

    Создаем статический курсор

    DECLARE cursor_name INSENSITIVE [ SCROLL ] CURSOR FOR select_statement 

  • Слайд 38

    Динамический курсор

    Динамические курсоры - это противоположность статических курсоров. Динамические курсоры отражают все изменения строк в результирующем наборе при прокрутке курсора. Значения типа данных, порядок и членство строк в результирующем наборе могут меняться для каждой выборки. Все инструкции UPDATE, INSERT и DELETE, выполняемые пользователями, видимы посредством курсора. Обновление видимы сразу, если они сделаны посредством курсора. 

  • Слайд 39

    Создаем динамический курсор

    DECLARE cursor_name [ SCROLL ] CURSOR FOR select_statement  [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]

  • Слайд 40

    Последовательный курсор

    DECLAREemployee_cursorCURSOR FOR SELECT id, name FROM employee DECLARE @emp_idINT, @emp_nameVARCHAR(32) OPENemployee_cursor FETCHemployee_cursorINTO @emp_id, @emp_name WHILE (@@FETCH_STATUS = 0) BEGIN FETCHemployee_cursorINTO @emp_id, @emp_name END CLOSEemployee_cursor DEALLOCATEemployee_cursor

  • Слайд 41

    DECLARE Employee_Cursor CURSOR FOR SELECT EmployeeID, Title FROM AdventureWorks2012.HumanResources.Employee WHERE JobTitle = 'Marketing Specialist'; OPEN Employee_Cursor; FETCH NEXT FROM Employee_Cursor; WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Employee_Cursor; END; CLOSE Employee_Cursor; DEALLOCATE Employee_Cursor;

  • Слайд 42

    Прокручиваемый курсор

    DECLARE cursor_name [INSENSITIVE] SCROLL CURSOR FOR select_statement  SCROLL – свобода для FETCH FETCH    [ [ NEXT | PRIOR | FIRST | LAST                 | ABSOLUTE { n | @nvar }                 | RELATIVE { n | @nvar }    ]             FROM         ]  cursor_name  [ INTO @variable_name [ ,...n ] 

  • Слайд 43

    Курсоры: усложним

    DECLARE cursor_name [ SCROLL ] CURSOR FOR select_statement FOR UPDATE [ OF column_name [ ,...n ] ] } ] UPDATE – возможность вносить изменения FETCH… UPDATE table_nameSET id=@id+2 WHERE CURRENT OF cursor_name;    

  • Слайд 44

    Курсор – это почти всегда дополнительные ресурсы сервера и резкое падение производительности по сравнению с другими решениями!

Посмотреть все слайды

Предложить улучшение Сообщить об ошибке