32. C-sharp 28 01-04-2014

Created Tuesday 01 April 2014

  1. Функции и хранимые процедуры в SQL
    1. Это подпрограммы (T-SQL — процедурный скриптовый язык)
    2. Функции — подпрограммы, возвращающие значение
    3. Хранимые процедуры — тоже возвращают значение, но по способу использования не могут быть использованы в выражениях (в отличие от функций)
    4. Основы T-SQL
      1. Типизированный язык
      2. Объявление переменной
        1. declare @x int
        2. declare @y int
        3. declare @text nvarchar(50)
        4. declare @s int
      3. Присвоение
        1. set @x = 5
        2. set @y = 7
        3. set @s = @x + @y
      4. Использование переменных
        1. select * from [dbo].[city] where id = @s
        2. select @y
        3. set @s = @x + @y + (select top 1 id from [dbo].[comp])
      5. Преобразование типов
        1. Функции cast и convert — cast (@s as nvarchar(50))
      6. Управляющие структуры
        1. if (@s > 0)
        2. begin
          1. select @s
        3. end
        4. else
        5. begin
          1. select 'negative'
        6. end
      7. Сделать функцию
        1. Созданная функция вызывается из SQL запросов
          1. select [dbo][funcname](1, -20)
        2. Виды функций
          1. Table-valued Functions
            1. Возвращает таблицу
          2. Scalar-valued Functions
            1. Возвращает одно значение
            2. Правой кнопкой мыши + New Scalar-valued Function
              1. Создаётся шаблонная функция
              2. CREATE FUNCTION funcname
              3. (
                1. @px int = 0, @py int — первый параметр имеет значение по умолчанию
              4. )
              5. RETURNS nvarchar(50)
              6. AS
              7. BEGIN
                1. declare @s int
                2. declare @return_text nvarchar(50)
                3. declare @x int
                4. declare @y int
                5. if (@s > 0)
                6. begin
                  1. set @return_text = cast (@s as nvarchar(50))
                7. end
                8. else
                9. begin
                  1. set @return_text = 'negative'
                10. end
                11. RETURN @return_text
              8. END
          3. Aggregate Functions
          4. System Functions
      8. Перебор таблиц, не зная имени таблицы
        1. Cursor или (лучше) другие системыне функции и процедуры
        2. System views
      9. Имена временных таблиц, которые
        1. в оперативной памяти, предваряются @
        2. на диске, предваряются #
        3. Синтаксис: select * into #tempTable from tablename where....
    5. Хранимые процедуры
      1. В процедуре можно вызвать функции
      2. Часто процедуры используются для выборок
      3. Процедуры и функции откомпилированы — безопасность
      4. Для вызова процедуры используется специальная команда EXEC
        1. exec [dbo].[procedureName] 2, 1
        2. exec [dbo].[procedureName1] 2, 1
        3. exec [dbo].[procedureName] 2, [dbo].[funcName] (3, 4)
        4. go
      5. Процедуры считаются самым лучшим способом добиться безопасности
    6. Dynamic SQL
      1. Выражение формируется "на лету"
      2. Внутри SQL формируются строковые переменные для запроса, столбцов и т.д., запрос формируется конкатенацией и вызывается exec sp_executesql или просто exec
        1. exec sp_executesql @mySqlCommand
        2. exec @mySqlCommand
    7. Хранимые процедуры доступны из кода, функции не доступны.
  2. Домашнее задание
    1. Создать базу данных и реализовать функциональность 4-мя способами (ADO, DataSet, Linq2SQL, Entity Framework), предназначенную для работы с каталогом продуктов. В базе данных хранятся данные о ресторанах (Restaurant). У каждого ресторана есть несколько видов меню (на каждый день, на субботу — Menu). В меню располагаются продукты, рассортированные по категориям (главное блюдо, десерт, напитки — Category). Блюдо — Dish. Пример: www.food.co.il
      1. При запуске программы видим список ресторанов.
      2. Выбираем ресторан.
      3. Загружается меню.
        1. Как минимум 2 меню: обычное и субботнее или бизнес-ланч и вечернее.
        2. Меню должно отображаться в соответствии со временем запроса: бизнес-ланч с 12 до 16, вечернее с 18 до 24. В остальное время суток выводить сообщение "Извините, мы закрыты"
      4. У ресторана должно быть название и телефон.
      5. Пользователь выбирает категорию, отображается список блюд. По каждому блюду должно быть название, цена, ингридиенты.
      6. Можно возвращаться, чтобы просматривать другие блюда и рестораны.
      7. Другой режим работы: поиск. В поиске указывать ингридиенты через запятую, и тогда виден список продуктов из разных категорий и ресторанов, содержащие искомые ингридиенты.



Backlinks: