SlideShare a Scribd company logo
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

More Related Content

PDF
Systemiin shinjilgee ba zohiomj lekts
PDF
Дэлгүүрийн кассын систем
PPTX
өгөгдлийн сангийн системийн үндэс
PDF
Статистикийн үндсэн аргууд түүний хэрэглээ
PPTX
Project management
DOC
User requirements
PDF
Комьпютерын дэлгүүрийн бүртгэл
PDF
Graduation Project Documentation.PDF
Systemiin shinjilgee ba zohiomj lekts
Дэлгүүрийн кассын систем
өгөгдлийн сангийн системийн үндэс
Статистикийн үндсэн аргууд түүний хэрэглээ
Project management
User requirements
Комьпютерын дэлгүүрийн бүртгэл
Graduation Project Documentation.PDF

What's hot (20)

PPTX
database 10
PPTX
Database 5
PPTX
Database 1
PPTX
database 12
PPTX
Database 3
PDF
Ogogdliin sangiin zohion baiguulalt lekts
PPTX
Database 11
PPTX
database 9
PPTX
PPTX
Database 6
PPTX
It101 lec6 10.06
DOCX
It101 lab11 use case
PPTX
Presentation1 өгөгдлийн сан
PPTX
It101 lect9
PDF
C# hicheelin lekts
DOC
user requirement 2 DB
DOCX
өгөгдлийн сан
PDF
Program hangamjiin tosliin menejment
PPTX
database 7-8
DOCX
Rdbms 300 test
database 10
Database 5
Database 1
database 12
Database 3
Ogogdliin sangiin zohion baiguulalt lekts
Database 11
database 9
Database 6
It101 lec6 10.06
It101 lab11 use case
Presentation1 өгөгдлийн сан
It101 lect9
C# hicheelin lekts
user requirement 2 DB
өгөгдлийн сан
Program hangamjiin tosliin menejment
database 7-8
Rdbms 300 test
Ad

Similar to database 13-14 (20)

PPTX
Se304 lec8
PPT
Dynamic web 10
PPT
Pp Lect6 1
PPT
Pp Lect7 1
DOCX
Lecture3
PPT
Pp Lect8
PPTX
Se304 lec7
DOC
U.cs101 лаборатори 8
DOC
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №4
PPTX
Лекц №13
PPTX
Se304 lec9
PPTX
Bayartsets
PPTX
RDBMS MySQL DB server
PPT
Pp Lect9 10 1
PDF
PPTX
PPTX
Microsoft excel
PPTX
Microsoft excel
Se304 lec8
Dynamic web 10
Pp Lect6 1
Pp Lect7 1
Lecture3
Pp Lect8
Se304 lec7
U.cs101 лаборатори 8
u.cs101 "Алгоритм ба програмчлал" Лекц №4
Лекц №13
Se304 lec9
Bayartsets
RDBMS MySQL DB server
Pp Lect9 10 1
Microsoft excel
Microsoft excel
Ad

More from Usukhuu Galaa (20)

DOCX
DOCX
DOCX
DOCX
DOCX
Rdbms bie daalt
DOCX
нийтлэл 1
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
DOCX
DW test

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