SlideShare una empresa de Scribd logo
1 de 37
LOGO


                 SQL командуудыг
                   динамикаар
                     ашиглах

Хичээлийн нэр:     Холбоост өгөгдлийн сан
Хичээлийн төрөл:   Лекц /№13-14/
Багшийн нэр:       Г.Өсөхжаргал
LOGO
        Хичээлийн агуулга



       SQL хэлний элемэнтүүд


       Хадгалагдсан процедур
LOGO
               Динамик SQL
 SQL хэлний стандарт болон үндсэн үйлдлүүдтэй хамт
  удирдлагын командуудыг ашиглан функц, процедур,
  триггер, харах хүснэгт гэх мэт объектыг үүсгэн ашиглах
  боломжтой юм.
 Үйлдлүүдийг багцлан хэцүү төвөгтэй үйлдлийг уян хатан
  байдлаар гүйцэтгэх боломжийг олгодог.
 SQL командуудыг динамикаар ашиглахын тулд програм
  зохиох чадвар шаардагдана.
LOGO
              Динамик SQL
Хувьсагч зарлах
 Хувьсагчийг     тодорхойлоход     дараах    мэдээлэл
 шаардагдана.
   Хувьсагчийн нэр - @ тэдмэгтээр эхлэх ѐстой бөгөөд
    идентификаторын дүрмийг баримтлах ѐстой.
   Өгөгдлийн төлөр- SQL хэлний үндсэн өгөгдлийн эсвэл
    хэрэглэгчийн төрөл байж болно.
 Олон хувьсагч зарлах бол таслаар тусгаарлан жагсааж
 бичнэ.
Бичигдэх хэлбэр:
  DECLRE @хувьсагчийнн_нэр[AS] өгөгдлийн_төрөл
LOGO
             Динамик SQL
 Хувьсагч зарлах

Жишээ:
 DECLARE @ borrow_id int
 DECLARE @borrow_id as int
 DECLARE @Group nvarchar(50), @Sales money;
LOGO
             Динамик SQL
 Хувьсагчид утга олгох

 Хувьсагчид утга олгохдоо SET эсвэл SELECT
   командын ашиглана.
Бичигдэх хэлбэр:
   SET @хувьсагчийн_нэр|талбарын_нэр
                                  утга |илэрхийлэл
Жишээ:
   DECLARE @myvar char(20);
   SET @myvar = ‘This is a test’;
LOGO
              Динамик SQL
 Хувьсагчид утга олгох

 Жишээ:
  DECLARE @state nchar(25);

  SET @state= ‘Улаанбаатар’;

  SELECT FirstName+ ‘ ‘ + LastName AS Name, City

  FROM Employee

  WHERE state = state;
LOGO
              Динамик SQL
 Хувьсагчид утга олгох
  Жишээ:
   DECLARE @borrow_id int, @outPrice smallmoney;
   SET @borrow_id=2;
   SELECT @outPrice=price
   FROM book a JOIN borrow_service b
                         ON a.book_id=book_id
   WHERE b.borrow_id=@borrow_id
LOGO
             Динамик SQL
 Хувьсагчид утга олгох

Жишээ:
    DECLARE @NewBalance int ;
    SET @NewBalance = 10;
    SET @NewBalance = @NewBalance* 10;
Жишээ:
    DECLARE @rows int;
    SET @rows=(SELECT COUNT (*) FROM Clustomer);
LOGO
             Динамик SQL
 Кодонд тайлбар оруулах

Нэг мөр тайлбар оруулах: - тайлбар
 Жишээ:
     -- Эхний жишээ
     DECLARE @NewBalance int;
Олон мөр тайлбар оруулах:/* тайлбар мэдээлэл */
 Жишээ:
     DECLARE @NewBalance int = 10;
     /* SET @NewBalance *=10;
     SELECT @NewBalance ; */
LOGO
              Динамик SQL
 Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэх

Мэдээллийг дэлгэцэнд хэвлэхдээ PRINT командыг
 ашиглана. Хэвлэх мэдээлэл нь тэмдэгт мөр байх ѐстой.
Хэвлэх тэмдэгт мөрийг урт нь:
  Юникод биш тэмдэгт: 8000
  Юникод тэмдэгт: 4000
Бичигдэх хэлбэр:
 PRINT тэмдэгт_мөр | хувьсагч | илэрхийлэл
LOGO
                  Динамик SQL
 Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэх

Жишээ: энэ мэдээлэл нь Apr 25 2010 8:22PM хэвлэгдэв.
 PRINT ‘энэ мэдээлэл нь ’
    + CAST(GETDATE () AS nvarchar(30))
    +’ хэвлэгдэх ‘;
Жишээ: энэ мэдээлэл нь Apr 25 2010 8:23PM хэвлэгдэв.
 DECLARE @PrintMessage nvarchar(50);
 SET @PrintMessage = ‘энэ мэдээлэл нь‘
    + CAST(GETDATE () AS nvarchar (30))
    +’хэвлэгдэв‘;
 PRINT @PrintMessage ;
LOGO
                    Динамик SQL
  Бүлэг үйлдлийн төгсгөлийг тодорхойлох
 Бүлэг үйлдлйин төгсгөлийн GO командаар тодорхойлно.
Жишээ:
  USE Lib;
  GO
  DECLARE @CountOfBook int
       SELECT @CountOfBook = COUNT(*) FROM book
       PRINT CAST(GETDATE() AS char(20)) + ‘’+
              CAST (@CountOfBook AS char(2))+’’
  GO

Apr 25 2010 8:30PM-нд нийт 9 ном байв
LOGO
               Динамик SQL
 Удирдлагын командууд

Дараах командууд нь бусад удирдлагын командуудтай
ихэвчлэн хамт ашиглагдана.

   BEGIN… END – хэсэг үйдлийг бүлэглэнэ.
   BREAK – үйлдлийг таслана.
   CONTINUE – үйлдлийг үргэлжлүүлнэ.
   RETURN – утга буцаана.
   GOTO label – удирдлагыг       label тэмдэглэгээний
    байрлалруу шилжүүлнэ.
LOGO
               Динамик SQL
 Нөхцөл шалгах команд

Бичигдэх хэлбэр:

       IF логик_нөхцөл
              { SQL_илэрхийлэл | Бүлэг_илэрхийлэл}
       ELSE
              { SQL_илэрхийлэл | Бүлэг_иэлрхийлэл}
LOGO
               Динамик SQL
 Нөхцөл шалгах команд

Жишээ:
 DECLARE @standart money, @title nvarchar(100);
 SELECT @titlt= title, @standart= price FROM book
                                 WHERE book_id=1;
 IF @standart>8000
     PRINT @title+’ном’+ cast(@standart as
     nvarchar(12)) + ‘үнэлгээтэй тул үнэтэй байна’
 ELSE
     PRINT @title+’ном’ + cast(@standart as
     nvarchar(12))+ ‘үнэлгээтэй тул хямд байна’
LOGO
            Динамик SQL
 Сонголтын оператор

Бичигдэх хэлбэр:
  CASE илэрхийлэл
     WHEN утга THEN үр_дүн
     […n]
     [ELSE үр_дүн]
   END
LOGO
            Динамик SQL
 Сонголтын оператор
 Жишээ:
   SELECT title, номын_төрөл=
   CASE btype_id
   WHEN ‘ZZ’ THEN ‘Зөгнөлт зохиол’
   WHEN ‘AA’ THEN ‘Аймшиг адал явдал’
   WHEN ‘YN’ THEN ‘Яруу найраг’
   ELSE ‘Бусад’
   END,
   price
   FROM book ORDER BY номын_төрөл
LOGO
                     Динамик SQL
 Сонголтын оператор
Жишээ:

    Title                                      номын_төрөл         Price
  1 Талийгаачид таваг шөл ч хэрэггүй           Аймшиг адал явдал   2500,00
  2 Хөлчүү үнэг                                Аймшиг адал явдал   2000,00
  3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь   Бусад               8000,00
  4 Өвчиний зурхай                             Бусад               7000,00
  5 Chinggis Mongolia                          Бусад               5000,00
  6 SOS сэтгүүл                                Бусад               2000,00
  7 Мөнгөн зүүдний жигүүр                      Зөгнөлт зохиол      2000,00
  8 Галав эриний зөнч                          Яруу найраг         6000,00
  9 Хорвоол ганцхан ээждээ                     Яруу найраг         4000,00
LOGO
              Динамик SQL
 Давталтын оператор

Бичигдэх хэлбэр:
  WHILE логик_нөхцөл
      {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}]
      [BREAK]
      {SQL_илэрхийлэл | Бүлэг_илэрхийлэл }]
      [CONTINUE]
      {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}]
LOGO
             Динамик SQL
 Нөхцөл шалгах команд
 Бичигдэх хэлбэр:
 WHILE (SELECT AVG(Price) FROM book) <5000
 BEGIN
   UPDATE book SET Price = Price*2
   SELECT MAX(Price) FROM book
   IF (SELECT MAX(Price) FROM book) >8000
        BREAK
   ELSE
        CONTINUE
   END
LOGO
       Хадгалагдсан процедур
 Stored procedure
  Хадгалагдсан процедур гэдэг нь энгийн бөгөөд нийлмэл
   шинж чанартай, олон дахин ашиглагдах SQL
   командуудыг нэгтгэсэн ӨС-ийн объект юм.
  Хадгалагдсан процедур нь:
     Програмчлалын талас бүтээмжийг нэмэгдүүлнэ.
     SQL командуудын аюулгүй байдлыг хангана
     Сүлжээний ачааллыг багасгана.
     Оролтын параметрүүдийг хүлээн авч, гаралтын
      парамертрээр утга буцаах боломжтой.
LOGO
       Хадгалагдсан процедур

 Дараах төрлийн хадгалагдсан процедурууд байна.
    Системийн хадгалагдсан процедур- эдгээр нь
     өгөгдлийн санд хадгалагдсан байдаг ба SQL Server
     дээр олон үйлдлийг гүйцэтгэхэд ашиглагдаг
     процедурууд
     жишээ нь:
      sp_attach_db - өгөгдлийн санг сервэрт холбох
      sp_detach_db - өгөгдлийн санг сервэрээс салгах
LOGO
       Хадгалагдсан процедур

 Хэрэглэгчийн тодорхойлсон хадгалагдсан процедур
  – Олон дахин ашиглагдах командуудыг агуулсан
  дэд програм юм. Энэ нь оролтын параметрийг
  хүлээн    авах,    DDL,    DML      командуудыг
  дуудах, гаралтын параметрийг буцаах боломжийг
  олгодог.
 ...
LOGO
       Хадгалагдсан процедур
 Хадгалагдсан     процедурт  ашиглагдах    хувьсагчийг
  параметр гэж нэрлэнэ.
 Параметрийг анхны утгатайгаар тодорхойлох боломжтой
 Мөн гаралатын параметр буюу процедураас буцаах
  утгыг хадгалах гаралтын параметрийг тодорхойлон
  хадгалагдсан процедураас утга буцаах боломжтой
 Хадгалагдсан процедурын нэр нь ӨС дахь бусад
  обектын нэртэй ижил байж болохгүй
 Хадгалагдсан процедур нь толгой болон их бие гэсэн
  хэсгээс бүрддэг.
LOGO
       Хадгалагдсан процедур

 Бичигдэх үндсэн хэлбэр:
  CREATE { PROC | PROCEDURE} процедурын_нэр
       [{ @параметрийн_нэр Өгөгдлийн_төрөл}
       [ = анхны _утга] [OUT [PUT] ] [,…]
       AS {<SQL_командууд> [;] […n]}
       [;]
  Үүгэсэн процедур SQL–ийн яг одоо ажиллаж байгаа
   ӨС-д хадгалагддаг.
LOGO
    Хадгалагдсан процедур

 Жишээ 1:
  CREATE PROCEDURE sp_select_book
  AS
     SELECT title, btype_name
     FROM book a JOIN book_type b
                         ON a.btype_id=b.btype_id
LOGO
  Хадгалагдсан процедурыг
           үүсгэх
Жишээ 2:
 CREATE PROCEDURE sp_language
     @lang_code int
 AS
   SELECT title, pub_name, lang_name
   FROM book a
     JOIN book_language b ON a.lang_id=b.lang_id
     JOIN publisher c ON a.pub_id =c.pub_id
   WHERE b.lang_id=@lang_code
LOGO
  Хадгалагдсан процедурыг
           үүсгэх
Жишээ 3:
 CREATE PROCEDURE sp_reg_today
    @type nchar(2),
 AS
    SET @date=year(getdate());
    SELECT title, btype_name, reg_date
    FROM book a
          JOIN book_type b ON a.btype_id=b.btype_id
    WHERE year(reg_date)=@date
LOGO
  Хадгалагдсан процедурыг
           үүсгэх
Жишээ 4:
 CREATE PROCEDURE sp_payment
    @borrow_id as int,
    @outPrice smallmoney = NULL OUTPUT
 AS
    SET @outPrice=price *10/100
    FROM book a
       JOIN borrow _service b ON a.btype_id=b.btype_id
    WHERE b.borrow_id=@borrow_id
LOGO
  Хадгалагдсан процедурыг
         биелүүлэх
Бичигдэх үндсэн хэлбэр:
  EXEC | EXECUTE процедурын_нэр
     [ [ @параметр = ] { утга
                          | @хувьсагч [OUTPUT]
                          | [ DEFAULT ]
                          }
     ]
LOGO
 Хадгалагдсан процедурыг
        биелүүлэх
Жишээ 1 –ийг биелүүлэх
   EXECUTE sp_select_book

     Title                                      Btype_name
   1 Талийгаачид таваг шөл ч хэрэггүй           Аймшиг адал явдал
   2 Хөлчүү үнэг                                Аймшиг адал явдал
   3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь   Бусад
   4 Өвчиний зурхай                             Бусад
   5 Chinggis Mongolia                          Бусад
   6 SOS сэтгүүл                                Бусад
   7 Мөнгөн зүүдний жигүүр                      Зөгнөлт зохиол
   8 Галав эриний зөнч                          Яруу найраг
   9 Хорвоол ганцхан ээждээ                     Яруу найраг
LOGO
 Хадгалагдсан процедурыг
        биелүүлэх
Жишээ 2-ийг биелүүлэх:
 EXECUTE sp_language 1

    Title                                      номын_төрөл         Lang_name
  1 Талийгаачид таваг шөл ч хэрэггүй           Аймшиг адал явдал   Монгол
  2 Хөлчүү үнэг                                Аймшиг адал явдал   Монгол
  3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь   Бусад               Монгол
  4 Өвчиний зурхай                             Бусад               Монгол
  5 Chinggis Mongolia                          Бусад               Монгол
  6 SOS сэтгүүл                                Бусад               Монгол
  7 Мөнгөн зүүдний жигүүр                      Зөгнөлт зохиол      Монгол
  8 Галав эриний зөнч                          Яруу найраг         Монгол
  9 Хорвоол ганцхан ээждээ                     Яруу найраг         Монгол
LOGO
    Хадгалагдсан процедурыг
           биелүүлэх
Жишээ 3 –ийг биелүүлэх:
   EXECURE sp_reg_today ‘TT’

          EXECUTE sp_reg_todya @type = ‘TT’
                           @ date= DEFAULT

  Title                                      номын_төрөл         Reg_date
1 Талийгаачид таваг шөл ч хэрэггүй           Аймшиг адал явдал   2010-04-12 00:00:00:000
2 Хөлчүү үнэг                                Аймшиг адал явдал   2010-07-16 00:00:00:000
3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь   Бусад               2010-04-26 00:00:00:000
LOGO
  Хадгалагдсан процедурыг
         биелүүлэх
Жишээ 4-ийг биелүүлэх:
   DECLARE @outPrice smallMoney;
    EXECUTE sp_payment2, @outPrice OUTPUT
    SELECT @outPrice AS tulbur


                   tulbur
               1   800.00
LOGO
   Процедурыг өөрчлөх ба
          устгах
 Хадгалагдсан процедурыг    өөрчлөхдөө   ALTER
  PROCEDURE командыг ашиглана.

Бичигдэх үндсэн хэлбэр:
  CREATE     PROCEDURE командтай адилхан дүрмээр
  тодорхойлогдоно.
 Хадгалагдсан    процедурыг устгахдаа     DROP
  PROCEDURE командыг ашиглана.

Бичигдэх үндсэн хэлбэр:
 DROP PROCEDURE процедурын нэр
LOGO
    Процедурыг өөрчлөх ба
           устгах
 Жишээ:
   ALTER PROCEDURE sp_language
     @lang_code int,
     @form_code int
   AS
     SELECT title, pub_name, lang_name, bform_name
     FROM book a JOIN book_language b ON a.lang_id=b.lang+id
             JOIN publisher c ON a.pub_id=c.pub_id
             JOIN book_form d ON d.bform_id=@form_code
     WHERE b.lang_id=@lang_code AND d.bform_id=@form_code
 Жишээ:
  DROP PROCEDURE sp_language

Más contenido relacionado

La actualidad más candente

Криптологийн тухай ойлголт - Cryptology
Криптологийн тухай ойлголт - CryptologyКриптологийн тухай ойлголт - Cryptology
Криптологийн тухай ойлголт - Cryptologysodhero
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн санOnon Tuul
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсБямбаа Авирмэд
 
Presentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санPresentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санbaterden
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsАлдарболд Э.
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэцMuuluu
 
05 use-case-modeling-1mon
05 use-case-modeling-1mon05 use-case-modeling-1mon
05 use-case-modeling-1monTuul Tuka
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsTuruu Tsogt
 

La actualidad más candente (20)

7 8
7 87 8
7 8
 
Rdbms 300 test
Rdbms 300 testRdbms 300 test
Rdbms 300 test
 
Pp Lect4 5
Pp Lect4 5Pp Lect4 5
Pp Lect4 5
 
database 10
database 10database 10
database 10
 
DB-2
DB-2DB-2
DB-2
 
Криптологийн тухай ойлголт - Cryptology
Криптологийн тухай ойлголт - CryptologyКриптологийн тухай ойлголт - Cryptology
Криптологийн тухай ойлголт - Cryptology
 
Pp Lect2 1
Pp Lect2 1Pp Lect2 1
Pp Lect2 1
 
database 7-8
database 7-8database 7-8
database 7-8
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн сан
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 
Presentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санPresentation1 өгөгдлийн сан
Presentation1 өгөгдлийн сан
 
It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
Se304
Se304Se304
Se304
 
Rdbms bie daalt
Rdbms bie daaltRdbms bie daalt
Rdbms bie daalt
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lekts
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
Pp Lect1 1
Pp Lect1 1Pp Lect1 1
Pp Lect1 1
 
05 use-case-modeling-1mon
05 use-case-modeling-1mon05 use-case-modeling-1mon
05 use-case-modeling-1mon
 
It101 lab9
It101 lab9It101 lab9
It101 lab9
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunkts
 

Similar a database 13-14 (20)

Se304 lec8
Se304 lec8Se304 lec8
Se304 lec8
 
Dynamic web 10
Dynamic web 10Dynamic web 10
Dynamic web 10
 
Pp Lect6 1
Pp Lect6 1Pp Lect6 1
Pp Lect6 1
 
Pp Lect7 1
Pp Lect7 1Pp Lect7 1
Pp Lect7 1
 
Lecture3
Lecture3Lecture3
Lecture3
 
Pp Lect8
Pp Lect8Pp Lect8
Pp Lect8
 
Se304 lec7
Se304 lec7Se304 lec7
Se304 lec7
 
U.cs101 лаборатори 8
U.cs101 лаборатори 8U.cs101 лаборатори 8
U.cs101 лаборатори 8
 
Vb.net mon1
Vb.net mon1Vb.net mon1
Vb.net mon1
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
Se304 lec9
Se304 lec9Se304 lec9
Se304 lec9
 
Excel9
Excel9Excel9
Excel9
 
Bayartsets
BayartsetsBayartsets
Bayartsets
 
RDBMS MySQL DB server
RDBMS MySQL DB serverRDBMS MySQL DB server
RDBMS MySQL DB server
 
Pp Lect9 10 1
Pp Lect9 10 1Pp Lect9 10 1
Pp Lect9 10 1
 
Лекц №9
Лекц №9Лекц №9
Лекц №9
 
G
GG
G
 
Microsoft excel
Microsoft excelMicrosoft excel
Microsoft excel
 
Microsoft excel
Microsoft excelMicrosoft excel
Microsoft excel
 

Más de Usukhuu Galaa (20)

Se205
Se205Se205
Se205
 
Is320
Is320Is320
Is320
 
Is201
Is201Is201
Is201
 
нийтлэл 1
нийтлэл 1нийтлэл 1
нийтлэл 1
 
IT13
IT13IT13
IT13
 
IT14
IT14IT14
IT14
 
IT12
IT12IT12
IT12
 
IT11
IT11IT11
IT11
 
IT10
IT10IT10
IT10
 
IT-9
IT-9IT-9
IT-9
 
IT-7
IT-7IT-7
IT-7
 
IT-6
IT-6IT-6
IT-6
 
IT-5
IT-5IT-5
IT-5
 
IT-4
IT-4IT-4
IT-4
 
IT-3
IT-3IT-3
IT-3
 
IT-2
IT-2IT-2
IT-2
 
IT-1
IT-1IT-1
IT-1
 
DW test
DW testDW test
DW test
 
IS test
IS testIS test
IS test
 
Use shop
Use shopUse shop
Use shop
 

database 13-14

  • 1. LOGO SQL командуудыг динамикаар ашиглах Хичээлийн нэр: Холбоост өгөгдлийн сан Хичээлийн төрөл: Лекц /№13-14/ Багшийн нэр: Г.Өсөхжаргал
  • 2. LOGO Хичээлийн агуулга SQL хэлний элемэнтүүд Хадгалагдсан процедур
  • 3. LOGO Динамик SQL  SQL хэлний стандарт болон үндсэн үйлдлүүдтэй хамт удирдлагын командуудыг ашиглан функц, процедур, триггер, харах хүснэгт гэх мэт объектыг үүсгэн ашиглах боломжтой юм.  Үйлдлүүдийг багцлан хэцүү төвөгтэй үйлдлийг уян хатан байдлаар гүйцэтгэх боломжийг олгодог.  SQL командуудыг динамикаар ашиглахын тулд програм зохиох чадвар шаардагдана.
  • 4. LOGO Динамик SQL Хувьсагч зарлах Хувьсагчийг тодорхойлоход дараах мэдээлэл шаардагдана.  Хувьсагчийн нэр - @ тэдмэгтээр эхлэх ѐстой бөгөөд идентификаторын дүрмийг баримтлах ѐстой.  Өгөгдлийн төлөр- SQL хэлний үндсэн өгөгдлийн эсвэл хэрэглэгчийн төрөл байж болно. Олон хувьсагч зарлах бол таслаар тусгаарлан жагсааж бичнэ. Бичигдэх хэлбэр: DECLRE @хувьсагчийнн_нэр[AS] өгөгдлийн_төрөл
  • 5. LOGO Динамик SQL Хувьсагч зарлах Жишээ: DECLARE @ borrow_id int DECLARE @borrow_id as int DECLARE @Group nvarchar(50), @Sales money;
  • 6. LOGO Динамик SQL Хувьсагчид утга олгох  Хувьсагчид утга олгохдоо SET эсвэл SELECT командын ашиглана. Бичигдэх хэлбэр: SET @хувьсагчийн_нэр|талбарын_нэр утга |илэрхийлэл Жишээ: DECLARE @myvar char(20); SET @myvar = ‘This is a test’;
  • 7. LOGO Динамик SQL Хувьсагчид утга олгох  Жишээ: DECLARE @state nchar(25); SET @state= ‘Улаанбаатар’; SELECT FirstName+ ‘ ‘ + LastName AS Name, City FROM Employee WHERE state = state;
  • 8. LOGO Динамик SQL Хувьсагчид утга олгох  Жишээ: DECLARE @borrow_id int, @outPrice smallmoney; SET @borrow_id=2; SELECT @outPrice=price FROM book a JOIN borrow_service b ON a.book_id=book_id WHERE b.borrow_id=@borrow_id
  • 9. LOGO Динамик SQL Хувьсагчид утга олгох Жишээ: DECLARE @NewBalance int ; SET @NewBalance = 10; SET @NewBalance = @NewBalance* 10; Жишээ: DECLARE @rows int; SET @rows=(SELECT COUNT (*) FROM Clustomer);
  • 10. LOGO Динамик SQL Кодонд тайлбар оруулах Нэг мөр тайлбар оруулах: - тайлбар Жишээ: -- Эхний жишээ DECLARE @NewBalance int; Олон мөр тайлбар оруулах:/* тайлбар мэдээлэл */ Жишээ: DECLARE @NewBalance int = 10; /* SET @NewBalance *=10; SELECT @NewBalance ; */
  • 11. LOGO Динамик SQL Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэх Мэдээллийг дэлгэцэнд хэвлэхдээ PRINT командыг ашиглана. Хэвлэх мэдээлэл нь тэмдэгт мөр байх ѐстой. Хэвлэх тэмдэгт мөрийг урт нь: Юникод биш тэмдэгт: 8000 Юникод тэмдэгт: 4000 Бичигдэх хэлбэр: PRINT тэмдэгт_мөр | хувьсагч | илэрхийлэл
  • 12. LOGO Динамик SQL Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэх Жишээ: энэ мэдээлэл нь Apr 25 2010 8:22PM хэвлэгдэв. PRINT ‘энэ мэдээлэл нь ’ + CAST(GETDATE () AS nvarchar(30)) +’ хэвлэгдэх ‘; Жишээ: энэ мэдээлэл нь Apr 25 2010 8:23PM хэвлэгдэв. DECLARE @PrintMessage nvarchar(50); SET @PrintMessage = ‘энэ мэдээлэл нь‘ + CAST(GETDATE () AS nvarchar (30)) +’хэвлэгдэв‘; PRINT @PrintMessage ;
  • 13. LOGO Динамик SQL Бүлэг үйлдлийн төгсгөлийг тодорхойлох  Бүлэг үйлдлйин төгсгөлийн GO командаар тодорхойлно. Жишээ: USE Lib; GO DECLARE @CountOfBook int SELECT @CountOfBook = COUNT(*) FROM book PRINT CAST(GETDATE() AS char(20)) + ‘’+ CAST (@CountOfBook AS char(2))+’’ GO Apr 25 2010 8:30PM-нд нийт 9 ном байв
  • 14. LOGO Динамик SQL Удирдлагын командууд Дараах командууд нь бусад удирдлагын командуудтай ихэвчлэн хамт ашиглагдана.  BEGIN… END – хэсэг үйдлийг бүлэглэнэ.  BREAK – үйлдлийг таслана.  CONTINUE – үйлдлийг үргэлжлүүлнэ.  RETURN – утга буцаана.  GOTO label – удирдлагыг label тэмдэглэгээний байрлалруу шилжүүлнэ.
  • 15. LOGO Динамик SQL Нөхцөл шалгах команд Бичигдэх хэлбэр: IF логик_нөхцөл { SQL_илэрхийлэл | Бүлэг_илэрхийлэл} ELSE { SQL_илэрхийлэл | Бүлэг_иэлрхийлэл}
  • 16. LOGO Динамик SQL Нөхцөл шалгах команд Жишээ: DECLARE @standart money, @title nvarchar(100); SELECT @titlt= title, @standart= price FROM book WHERE book_id=1; IF @standart>8000 PRINT @title+’ном’+ cast(@standart as nvarchar(12)) + ‘үнэлгээтэй тул үнэтэй байна’ ELSE PRINT @title+’ном’ + cast(@standart as nvarchar(12))+ ‘үнэлгээтэй тул хямд байна’
  • 17. LOGO Динамик SQL Сонголтын оператор Бичигдэх хэлбэр: CASE илэрхийлэл WHEN утга THEN үр_дүн […n] [ELSE үр_дүн] END
  • 18. LOGO Динамик SQL Сонголтын оператор Жишээ: SELECT title, номын_төрөл= CASE btype_id WHEN ‘ZZ’ THEN ‘Зөгнөлт зохиол’ WHEN ‘AA’ THEN ‘Аймшиг адал явдал’ WHEN ‘YN’ THEN ‘Яруу найраг’ ELSE ‘Бусад’ END, price FROM book ORDER BY номын_төрөл
  • 19. LOGO Динамик SQL Сонголтын оператор Жишээ: Title номын_төрөл Price 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал 2500,00 2 Хөлчүү үнэг Аймшиг адал явдал 2000,00 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад 8000,00 4 Өвчиний зурхай Бусад 7000,00 5 Chinggis Mongolia Бусад 5000,00 6 SOS сэтгүүл Бусад 2000,00 7 Мөнгөн зүүдний жигүүр Зөгнөлт зохиол 2000,00 8 Галав эриний зөнч Яруу найраг 6000,00 9 Хорвоол ганцхан ээждээ Яруу найраг 4000,00
  • 20. LOGO Динамик SQL Давталтын оператор Бичигдэх хэлбэр: WHILE логик_нөхцөл {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}] [BREAK] {SQL_илэрхийлэл | Бүлэг_илэрхийлэл }] [CONTINUE] {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}]
  • 21. LOGO Динамик SQL Нөхцөл шалгах команд Бичигдэх хэлбэр: WHILE (SELECT AVG(Price) FROM book) <5000 BEGIN UPDATE book SET Price = Price*2 SELECT MAX(Price) FROM book IF (SELECT MAX(Price) FROM book) >8000 BREAK ELSE CONTINUE END
  • 22. LOGO Хадгалагдсан процедур Stored procedure  Хадгалагдсан процедур гэдэг нь энгийн бөгөөд нийлмэл шинж чанартай, олон дахин ашиглагдах SQL командуудыг нэгтгэсэн ӨС-ийн объект юм.  Хадгалагдсан процедур нь:  Програмчлалын талас бүтээмжийг нэмэгдүүлнэ.  SQL командуудын аюулгүй байдлыг хангана  Сүлжээний ачааллыг багасгана.  Оролтын параметрүүдийг хүлээн авч, гаралтын парамертрээр утга буцаах боломжтой.
  • 23. LOGO Хадгалагдсан процедур  Дараах төрлийн хадгалагдсан процедурууд байна.  Системийн хадгалагдсан процедур- эдгээр нь өгөгдлийн санд хадгалагдсан байдаг ба SQL Server дээр олон үйлдлийг гүйцэтгэхэд ашиглагдаг процедурууд жишээ нь:  sp_attach_db - өгөгдлийн санг сервэрт холбох  sp_detach_db - өгөгдлийн санг сервэрээс салгах
  • 24. LOGO Хадгалагдсан процедур  Хэрэглэгчийн тодорхойлсон хадгалагдсан процедур – Олон дахин ашиглагдах командуудыг агуулсан дэд програм юм. Энэ нь оролтын параметрийг хүлээн авах, DDL, DML командуудыг дуудах, гаралтын параметрийг буцаах боломжийг олгодог.  ...
  • 25. LOGO Хадгалагдсан процедур  Хадгалагдсан процедурт ашиглагдах хувьсагчийг параметр гэж нэрлэнэ.  Параметрийг анхны утгатайгаар тодорхойлох боломжтой  Мөн гаралатын параметр буюу процедураас буцаах утгыг хадгалах гаралтын параметрийг тодорхойлон хадгалагдсан процедураас утга буцаах боломжтой  Хадгалагдсан процедурын нэр нь ӨС дахь бусад обектын нэртэй ижил байж болохгүй  Хадгалагдсан процедур нь толгой болон их бие гэсэн хэсгээс бүрддэг.
  • 26. LOGO Хадгалагдсан процедур Бичигдэх үндсэн хэлбэр: CREATE { PROC | PROCEDURE} процедурын_нэр [{ @параметрийн_нэр Өгөгдлийн_төрөл} [ = анхны _утга] [OUT [PUT] ] [,…] AS {<SQL_командууд> [;] […n]} [;]  Үүгэсэн процедур SQL–ийн яг одоо ажиллаж байгаа ӨС-д хадгалагддаг.
  • 27. LOGO Хадгалагдсан процедур Жишээ 1: CREATE PROCEDURE sp_select_book AS SELECT title, btype_name FROM book a JOIN book_type b ON a.btype_id=b.btype_id
  • 28. LOGO Хадгалагдсан процедурыг үүсгэх Жишээ 2: CREATE PROCEDURE sp_language @lang_code int AS SELECT title, pub_name, lang_name FROM book a JOIN book_language b ON a.lang_id=b.lang_id JOIN publisher c ON a.pub_id =c.pub_id WHERE b.lang_id=@lang_code
  • 29. LOGO Хадгалагдсан процедурыг үүсгэх Жишээ 3: CREATE PROCEDURE sp_reg_today @type nchar(2), AS SET @date=year(getdate()); SELECT title, btype_name, reg_date FROM book a JOIN book_type b ON a.btype_id=b.btype_id WHERE year(reg_date)=@date
  • 30. LOGO Хадгалагдсан процедурыг үүсгэх Жишээ 4: CREATE PROCEDURE sp_payment @borrow_id as int, @outPrice smallmoney = NULL OUTPUT AS SET @outPrice=price *10/100 FROM book a JOIN borrow _service b ON a.btype_id=b.btype_id WHERE b.borrow_id=@borrow_id
  • 31. LOGO Хадгалагдсан процедурыг биелүүлэх Бичигдэх үндсэн хэлбэр: EXEC | EXECUTE процедурын_нэр [ [ @параметр = ] { утга | @хувьсагч [OUTPUT] | [ DEFAULT ] } ]
  • 32. LOGO Хадгалагдсан процедурыг биелүүлэх Жишээ 1 –ийг биелүүлэх  EXECUTE sp_select_book Title Btype_name 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал 2 Хөлчүү үнэг Аймшиг адал явдал 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад 4 Өвчиний зурхай Бусад 5 Chinggis Mongolia Бусад 6 SOS сэтгүүл Бусад 7 Мөнгөн зүүдний жигүүр Зөгнөлт зохиол 8 Галав эриний зөнч Яруу найраг 9 Хорвоол ганцхан ээждээ Яруу найраг
  • 33. LOGO Хадгалагдсан процедурыг биелүүлэх Жишээ 2-ийг биелүүлэх:  EXECUTE sp_language 1 Title номын_төрөл Lang_name 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал Монгол 2 Хөлчүү үнэг Аймшиг адал явдал Монгол 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад Монгол 4 Өвчиний зурхай Бусад Монгол 5 Chinggis Mongolia Бусад Монгол 6 SOS сэтгүүл Бусад Монгол 7 Мөнгөн зүүдний жигүүр Зөгнөлт зохиол Монгол 8 Галав эриний зөнч Яруу найраг Монгол 9 Хорвоол ганцхан ээждээ Яруу найраг Монгол
  • 34. LOGO Хадгалагдсан процедурыг биелүүлэх Жишээ 3 –ийг биелүүлэх:  EXECURE sp_reg_today ‘TT’ EXECUTE sp_reg_todya @type = ‘TT’ @ date= DEFAULT Title номын_төрөл Reg_date 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал 2010-04-12 00:00:00:000 2 Хөлчүү үнэг Аймшиг адал явдал 2010-07-16 00:00:00:000 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад 2010-04-26 00:00:00:000
  • 35. LOGO Хадгалагдсан процедурыг биелүүлэх Жишээ 4-ийг биелүүлэх:  DECLARE @outPrice smallMoney; EXECUTE sp_payment2, @outPrice OUTPUT SELECT @outPrice AS tulbur tulbur 1 800.00
  • 36. LOGO Процедурыг өөрчлөх ба устгах  Хадгалагдсан процедурыг өөрчлөхдөө ALTER PROCEDURE командыг ашиглана. Бичигдэх үндсэн хэлбэр: CREATE PROCEDURE командтай адилхан дүрмээр тодорхойлогдоно.  Хадгалагдсан процедурыг устгахдаа DROP PROCEDURE командыг ашиглана. Бичигдэх үндсэн хэлбэр:  DROP PROCEDURE процедурын нэр
  • 37. LOGO Процедурыг өөрчлөх ба устгах  Жишээ: ALTER PROCEDURE sp_language @lang_code int, @form_code int AS SELECT title, pub_name, lang_name, bform_name FROM book a JOIN book_language b ON a.lang_id=b.lang+id JOIN publisher c ON a.pub_id=c.pub_id JOIN book_form d ON d.bform_id=@form_code WHERE b.lang_id=@lang_code AND d.bform_id=@form_code  Жишээ: DROP PROCEDURE sp_language