Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LOGO                 SQL командуудыг                   динамикаар                     ашиглахХичээлийн нэр:     Холбоост ө...
LOGO        Хичээлийн агуулга       SQL хэлний элемэнтүүд       Хадгалагдсан процедур
LOGO               Динамик SQL SQL хэлний стандарт болон үндсэн үйлдлүүдтэй хамт  удирдлагын командуудыг ашиглан функц, п...
LOGO              Динамик SQLХувьсагч зарлах Хувьсагчийг     тодорхойлоход     дараах    мэдээлэл шаардагдана.   Хувьсагч...
LOGO             Динамик SQL Хувьсагч зарлахЖишээ: DECLARE @ borrow_id int DECLARE @borrow_id as int DECLARE @Group nvarch...
LOGO             Динамик SQL Хувьсагчид утга олгох Хувьсагчид утга олгохдоо SET эсвэл SELECT   командын ашиглана.Бичигдэх...
LOGO              Динамик SQL Хувьсагчид утга олгох Жишээ:  DECLARE @state nchar(25);  SET @state= ‘Улаанбаатар’;  SELECT...
LOGO              Динамик SQL Хувьсагчид утга олгох  Жишээ:   DECLARE @borrow_id int, @outPrice smallmoney;   SET @borrow...
LOGO             Динамик SQL Хувьсагчид утга олгохЖишээ:    DECLARE @NewBalance int ;    SET @NewBalance = 10;    SET @New...
LOGO             Динамик SQL Кодонд тайлбар оруулахНэг мөр тайлбар оруулах: - тайлбар Жишээ:     -- Эхний жишээ     DECLA...
LOGO              Динамик SQL Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэхМэдээллийг дэлгэцэнд хэвлэхдээ PRINT командыг аш...
LOGO                  Динамик SQL Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэхЖишээ: энэ мэдээлэл нь Apr 25 2010 8:22PM хэв...
LOGO                    Динамик SQL  Бүлэг үйлдлийн төгсгөлийг тодорхойлох Бүлэг үйлдлйин төгсгөлийн GO командаар тодорхо...
LOGO               Динамик SQL Удирдлагын командуудДараах командууд нь бусад удирдлагын командуудтайихэвчлэн хамт ашиглагд...
LOGO               Динамик SQL Нөхцөл шалгах командБичигдэх хэлбэр:       IF логик_нөхцөл              { SQL_илэрхийлэл | ...
LOGO               Динамик SQL Нөхцөл шалгах командЖишээ: DECLARE @standart money, @title nvarchar(100); SELECT @titlt= ti...
LOGO            Динамик SQL Сонголтын операторБичигдэх хэлбэр:  CASE илэрхийлэл     WHEN утга THEN үр_дүн     […n]     [EL...
LOGO            Динамик SQL Сонголтын оператор Жишээ:   SELECT title, номын_төрөл=   CASE btype_id   WHEN ‘ZZ’ THEN ‘Зөгнө...
LOGO                     Динамик SQL Сонголтын операторЖишээ:    Title                                      номын_төрөл   ...
LOGO              Динамик SQL Давталтын операторБичигдэх хэлбэр:  WHILE логик_нөхцөл      {SQL_илэрхийлэл | Бүлэг_илэрхийл...
LOGO             Динамик SQL Нөхцөл шалгах команд Бичигдэх хэлбэр: WHILE (SELECT AVG(Price) FROM book) <5000 BEGIN   UPDAT...
LOGO       Хадгалагдсан процедур Stored procedure  Хадгалагдсан процедур гэдэг нь энгийн бөгөөд нийлмэл   шинж чанартай, ...
LOGO       Хадгалагдсан процедур Дараах төрлийн хадгалагдсан процедурууд байна.    Системийн хадгалагдсан процедур- эдгэ...
LOGO       Хадгалагдсан процедур Хэрэглэгчийн тодорхойлсон хадгалагдсан процедур  – Олон дахин ашиглагдах командуудыг агу...
LOGO       Хадгалагдсан процедур Хадгалагдсан     процедурт  ашиглагдах    хувьсагчийг  параметр гэж нэрлэнэ. Параметрий...
LOGO       Хадгалагдсан процедур Бичигдэх үндсэн хэлбэр:  CREATE { PROC | PROCEDURE} процедурын_нэр       [{ @параметрийн_...
LOGO    Хадгалагдсан процедур Жишээ 1:  CREATE PROCEDURE sp_select_book  AS     SELECT title, btype_name     FROM book a J...
LOGO  Хадгалагдсан процедурыг           үүсгэхЖишээ 2: CREATE PROCEDURE sp_language     @lang_code int AS   SELECT title, ...
LOGO  Хадгалагдсан процедурыг           үүсгэхЖишээ 3: CREATE PROCEDURE sp_reg_today    @type nchar(2), AS    SET @date=ye...
LOGO  Хадгалагдсан процедурыг           үүсгэхЖишээ 4: CREATE PROCEDURE sp_payment    @borrow_id as int,    @outPrice smal...
LOGO  Хадгалагдсан процедурыг         биелүүлэхБичигдэх үндсэн хэлбэр:  EXEC | EXECUTE процедурын_нэр     [ [ @параметр = ...
LOGO Хадгалагдсан процедурыг        биелүүлэхЖишээ 1 –ийг биелүүлэх   EXECUTE sp_select_book     Title                   ...
LOGO Хадгалагдсан процедурыг        биелүүлэхЖишээ 2-ийг биелүүлэх: EXECUTE sp_language 1    Title                       ...
LOGO    Хадгалагдсан процедурыг           биелүүлэхЖишээ 3 –ийг биелүүлэх:   EXECURE sp_reg_today ‘TT’          EXECUTE s...
LOGO  Хадгалагдсан процедурыг         биелүүлэхЖишээ 4-ийг биелүүлэх:   DECLARE @outPrice smallMoney;    EXECUTE sp_payme...
LOGO   Процедурыг өөрчлөх ба          устгах Хадгалагдсан процедурыг    өөрчлөхдөө   ALTER  PROCEDURE командыг ашиглана.Б...
LOGO    Процедурыг өөрчлөх ба           устгах Жишээ:   ALTER PROCEDURE sp_language     @lang_code int,     @form_code in...
Upcoming SlideShare
Loading in …5
×

database 13-14

1,602 views

Published on

  • Be the first to comment

  • Be the first to like this

database 13-14

  1. 1. LOGO SQL командуудыг динамикаар ашиглахХичээлийн нэр: Холбоост өгөгдлийн санХичээлийн төрөл: Лекц /№13-14/Багшийн нэр: Г.Өсөхжаргал
  2. 2. LOGO Хичээлийн агуулга SQL хэлний элемэнтүүд Хадгалагдсан процедур
  3. 3. LOGO Динамик SQL SQL хэлний стандарт болон үндсэн үйлдлүүдтэй хамт удирдлагын командуудыг ашиглан функц, процедур, триггер, харах хүснэгт гэх мэт объектыг үүсгэн ашиглах боломжтой юм. Үйлдлүүдийг багцлан хэцүү төвөгтэй үйлдлийг уян хатан байдлаар гүйцэтгэх боломжийг олгодог. SQL командуудыг динамикаар ашиглахын тулд програм зохиох чадвар шаардагдана.
  4. 4. LOGO Динамик SQLХувьсагч зарлах Хувьсагчийг тодорхойлоход дараах мэдээлэл шаардагдана.  Хувьсагчийн нэр - @ тэдмэгтээр эхлэх ѐстой бөгөөд идентификаторын дүрмийг баримтлах ѐстой.  Өгөгдлийн төлөр- SQL хэлний үндсэн өгөгдлийн эсвэл хэрэглэгчийн төрөл байж болно. Олон хувьсагч зарлах бол таслаар тусгаарлан жагсааж бичнэ.Бичигдэх хэлбэр: DECLRE @хувьсагчийнн_нэр[AS] өгөгдлийн_төрөл
  5. 5. LOGO Динамик SQL Хувьсагч зарлахЖишээ: DECLARE @ borrow_id int DECLARE @borrow_id as int DECLARE @Group nvarchar(50), @Sales money;
  6. 6. LOGO Динамик SQL Хувьсагчид утга олгох Хувьсагчид утга олгохдоо SET эсвэл SELECT командын ашиглана.Бичигдэх хэлбэр: SET @хувьсагчийн_нэр|талбарын_нэр утга |илэрхийлэлЖишээ: DECLARE @myvar char(20); SET @myvar = ‘This is a test’;
  7. 7. LOGO Динамик SQL Хувьсагчид утга олгох Жишээ: DECLARE @state nchar(25); SET @state= ‘Улаанбаатар’; SELECT FirstName+ ‘ ‘ + LastName AS Name, City FROM Employee WHERE state = state;
  8. 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. 9. LOGO Динамик SQL Хувьсагчид утга олгохЖишээ: DECLARE @NewBalance int ; SET @NewBalance = 10; SET @NewBalance = @NewBalance* 10;Жишээ: DECLARE @rows int; SET @rows=(SELECT COUNT (*) FROM Clustomer);
  10. 10. LOGO Динамик SQL Кодонд тайлбар оруулахНэг мөр тайлбар оруулах: - тайлбар Жишээ: -- Эхний жишээ DECLARE @NewBalance int;Олон мөр тайлбар оруулах:/* тайлбар мэдээлэл */ Жишээ: DECLARE @NewBalance int = 10; /* SET @NewBalance *=10; SELECT @NewBalance ; */
  11. 11. LOGO Динамик SQL Хэрэглэгчийн тодорхойлсон мэдээллийг хэвлэхМэдээллийг дэлгэцэнд хэвлэхдээ PRINT командыг ашиглана. Хэвлэх мэдээлэл нь тэмдэгт мөр байх ѐстой.Хэвлэх тэмдэгт мөрийг урт нь: Юникод биш тэмдэгт: 8000 Юникод тэмдэгт: 4000Бичигдэх хэлбэр: PRINT тэмдэгт_мөр | хувьсагч | илэрхийлэл
  12. 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. 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))+’’ GOApr 25 2010 8:30PM-нд нийт 9 ном байв
  14. 14. LOGO Динамик SQL Удирдлагын командуудДараах командууд нь бусад удирдлагын командуудтайихэвчлэн хамт ашиглагдана. BEGIN… END – хэсэг үйдлийг бүлэглэнэ. BREAK – үйлдлийг таслана. CONTINUE – үйлдлийг үргэлжлүүлнэ. RETURN – утга буцаана. GOTO label – удирдлагыг label тэмдэглэгээний байрлалруу шилжүүлнэ.
  15. 15. LOGO Динамик SQL Нөхцөл шалгах командБичигдэх хэлбэр: IF логик_нөхцөл { SQL_илэрхийлэл | Бүлэг_илэрхийлэл} ELSE { SQL_илэрхийлэл | Бүлэг_иэлрхийлэл}
  16. 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. 17. LOGO Динамик SQL Сонголтын операторБичигдэх хэлбэр: CASE илэрхийлэл WHEN утга THEN үр_дүн […n] [ELSE үр_дүн] END
  18. 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. 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. 20. LOGO Динамик SQL Давталтын операторБичигдэх хэлбэр: WHILE логик_нөхцөл {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}] [BREAK] {SQL_илэрхийлэл | Бүлэг_илэрхийлэл }] [CONTINUE] {SQL_илэрхийлэл | Бүлэг_илэрхийлэл}]
  21. 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. 22. LOGO Хадгалагдсан процедур Stored procedure  Хадгалагдсан процедур гэдэг нь энгийн бөгөөд нийлмэл шинж чанартай, олон дахин ашиглагдах SQL командуудыг нэгтгэсэн ӨС-ийн объект юм.  Хадгалагдсан процедур нь:  Програмчлалын талас бүтээмжийг нэмэгдүүлнэ.  SQL командуудын аюулгүй байдлыг хангана  Сүлжээний ачааллыг багасгана.  Оролтын параметрүүдийг хүлээн авч, гаралтын парамертрээр утга буцаах боломжтой.
  23. 23. LOGO Хадгалагдсан процедур Дараах төрлийн хадгалагдсан процедурууд байна.  Системийн хадгалагдсан процедур- эдгээр нь өгөгдлийн санд хадгалагдсан байдаг ба SQL Server дээр олон үйлдлийг гүйцэтгэхэд ашиглагдаг процедурууд жишээ нь:  sp_attach_db - өгөгдлийн санг сервэрт холбох  sp_detach_db - өгөгдлийн санг сервэрээс салгах
  24. 24. LOGO Хадгалагдсан процедур Хэрэглэгчийн тодорхойлсон хадгалагдсан процедур – Олон дахин ашиглагдах командуудыг агуулсан дэд програм юм. Энэ нь оролтын параметрийг хүлээн авах, DDL, DML командуудыг дуудах, гаралтын параметрийг буцаах боломжийг олгодог. ...
  25. 25. LOGO Хадгалагдсан процедур Хадгалагдсан процедурт ашиглагдах хувьсагчийг параметр гэж нэрлэнэ. Параметрийг анхны утгатайгаар тодорхойлох боломжтой Мөн гаралатын параметр буюу процедураас буцаах утгыг хадгалах гаралтын параметрийг тодорхойлон хадгалагдсан процедураас утга буцаах боломжтой Хадгалагдсан процедурын нэр нь ӨС дахь бусад обектын нэртэй ижил байж болохгүй Хадгалагдсан процедур нь толгой болон их бие гэсэн хэсгээс бүрддэг.
  26. 26. LOGO Хадгалагдсан процедур Бичигдэх үндсэн хэлбэр: CREATE { PROC | PROCEDURE} процедурын_нэр [{ @параметрийн_нэр Өгөгдлийн_төрөл} [ = анхны _утга] [OUT [PUT] ] [,…] AS {<SQL_командууд> [;] […n]} [;]  Үүгэсэн процедур SQL–ийн яг одоо ажиллаж байгаа ӨС-д хадгалагддаг.
  27. 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. 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. 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. 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. 31. LOGO Хадгалагдсан процедурыг биелүүлэхБичигдэх үндсэн хэлбэр: EXEC | EXECUTE процедурын_нэр [ [ @параметр = ] { утга | @хувьсагч [OUTPUT] | [ DEFAULT ] } ]
  32. 32. LOGO Хадгалагдсан процедурыг биелүүлэхЖишээ 1 –ийг биелүүлэх EXECUTE sp_select_book Title Btype_name 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал 2 Хөлчүү үнэг Аймшиг адал явдал 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад 4 Өвчиний зурхай Бусад 5 Chinggis Mongolia Бусад 6 SOS сэтгүүл Бусад 7 Мөнгөн зүүдний жигүүр Зөгнөлт зохиол 8 Галав эриний зөнч Яруу найраг 9 Хорвоол ганцхан ээждээ Яруу найраг
  33. 33. LOGO Хадгалагдсан процедурыг биелүүлэхЖишээ 2-ийг биелүүлэх: EXECUTE sp_language 1 Title номын_төрөл Lang_name 1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал Монгол 2 Хөлчүү үнэг Аймшиг адал явдал Монгол 3 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад Монгол 4 Өвчиний зурхай Бусад Монгол 5 Chinggis Mongolia Бусад Монгол 6 SOS сэтгүүл Бусад Монгол 7 Мөнгөн зүүдний жигүүр Зөгнөлт зохиол Монгол 8 Галав эриний зөнч Яруу найраг Монгол 9 Хорвоол ганцхан ээждээ Яруу найраг Монгол
  34. 34. LOGO Хадгалагдсан процедурыг биелүүлэхЖишээ 3 –ийг биелүүлэх:  EXECURE sp_reg_today ‘TT’ EXECUTE sp_reg_todya @type = ‘TT’ @ date= DEFAULT Title номын_төрөл Reg_date1 Талийгаачид таваг шөл ч хэрэггүй Аймшиг адал явдал 2010-04-12 00:00:00:0002 Хөлчүү үнэг Аймшиг адал явдал 2010-07-16 00:00:00:0003 Орчин үеийн эмэгтэй хүний нэвтэрхий толь Бусад 2010-04-26 00:00:00:000
  35. 35. LOGO Хадгалагдсан процедурыг биелүүлэхЖишээ 4-ийг биелүүлэх:  DECLARE @outPrice smallMoney; EXECUTE sp_payment2, @outPrice OUTPUT SELECT @outPrice AS tulbur tulbur 1 800.00
  36. 36. LOGO Процедурыг өөрчлөх ба устгах Хадгалагдсан процедурыг өөрчлөхдөө ALTER PROCEDURE командыг ашиглана.Бичигдэх үндсэн хэлбэр: CREATE PROCEDURE командтай адилхан дүрмээр тодорхойлогдоно. Хадгалагдсан процедурыг устгахдаа DROP PROCEDURE командыг ашиглана.Бичигдэх үндсэн хэлбэр: DROP PROCEDURE процедурын нэр
  37. 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

×