SQL Server using Transact-SQL

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ครั้งที่ 9 Function(ต่อ).
Advertisements

INTRODUCTION TO C LANGUAGE
Introduction to C Introduction to C.
เสรี ชิโนดม MS SQLServer 7 เสรี ชิโนดม
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
กลุ่มคำสั่ง SQL สามารถแบ่งได้ดังนี้
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)
ครั้งที่ 8 Function.
Department of Computer Business
การรับค่าและแสดงผล.
เนื้อหา 1. สืบค้นข้อมูลจากหนึ่งตาราง
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
สถาปัตยกรรม ActiveX Data Object (ADO)
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
Structure Programming
Function.
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
การแสดงผล และการรับข้อมูล
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
PHP LANGUAGE.
ฟังก์ชั่น function.
โปรแกรมย่อย : Pascal Procedure
ตัวแปรชุด.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
ตัวแปรแบบโครงสร้าง.
ASP:ACCESS Database.
ASP:ACCESS Database.
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
SQL - Structured Query Language
การควบคุมทิศทางการทำงานของโปรแกรม
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
Database Programming Exceed Camp #2 24 October 2005.
C# Programming Exceed Camp: Day 3.
Javascripts.
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
ตัวแปรกับชนิดของข้อมูล
โครงสร้างควบคุมการทำงาน
Creating Database With Structure Query Language (SA&D-8)
Software Engineering Project Presentation
SQL Structured Query Language.
คำสั่งควบคุมการทำงานของ ActionScripts
ตัวแปรกับชนิดของข้อมูล
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
คำสั่งควบคุมขั้นตอน Flow control statements
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
CHAPTER 4 Control Statements
หลักการเขียนโปรแกรม ( )
SML Report Designer การออกแบบรายงาน.
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Introduction to PHP, MySQL – Special Problem (Database)
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
SQL Structured Query Language.
Java Programming Java Structure and Datatype,Variable
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
การเขียนโปรแกรมบนเว็บ PHP กับ MySQL
บทที่ 6 พจนานุกรมข้อมูล และ คำอธิบายกระบวนการ
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
PHP: [9] ฐานข้อมูล MYSQL
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
Database Design & Development
ภาษา SQL (Structured Query Language)
Integrity Constraints
SQL (Structured Query Language)
ใบสำเนางานนำเสนอ:

SQL Server using Transact-SQL Introduction to Programming SQL Server using Transact-SQL

Objective สามารถเขียนกลุ่มคำสั่งใน T-SQL และคอมเมนท์ได้ สามาถกำหนดตัวแปร กำหนดค่าให้กับตัวแปร ชนิด Local ใน T-SQL ได้ สามารถใช้ T-SQL control-of -flow ได้ สามารถส่งข้อความ หรือข้อความแสดงความผิดพลาด และ ผลลัพท์กลับคืนมาได้

Application Development Context กำหนดกฎข้อบังคับต่าง ๆ กำหนดคุณสมบัติของโปรแกรม ออกแบบทาง logical และ physical เริ่มเขียนโปรแกรม

Batch Restrictions and Note คำสั่ง SQL บางคำสั่งไม่สามารถรวมกันคำสั่งอื่น ๆ ได้ใน T-SQL Stored procedures ใน batch ต้องขึ้นต้นด้วยคำว่า exec หรือ execute , เว้นแต่ว่าเป็นคำสั่งแรก คำสั่งต่อไปนี้ไม่สามารถรวมกับคำสั่งอื่น ๆ ใน batch create table create default create trigger create views declare cursor use

Commenting T-SQL Code /* นี่คือ Comment */ -- นี่คือ Comment

Introduction Local Varialbles ข้อจำกัดและ ความผิดพลาดทั่วไป

Local Varialbles ผู้ใช้เป็นผู้กำหนด ใช้คำสั่ง declare ในการกำหนดตัวแปร ต้องมีชื่อและชนิดของข้อมูล สามารถถูกกำหนดค่าโดยผู้ใข้ได้ จะถูกกำหนดให้เป็นค่า null เมื่อมีการประกาศตัวแปร จะใช้งานภายใต้ batch, stored procedure หรือ trigger ที่ถูกประกาศไว้เท่านั้น

Local Varialbles ต้องขึ้นต้นด้วยเครื่องหมาย “@” ชื่ตัวแปรมีความยาวได้ถึง 30 ตัวอักษรรวมเครื่องหมาย “@” รูปแบบ declare @variable_name datatype [, @variable_name datatype] ตัวอย่าง declare @myqty int declare @myid char(40)

Assigning Values to Local Varialbles with Select รูปแบบ select @variable=expression [, @variable=expression]… [from ...] [where …] Example declare @var1 int select @var1 = 99

Assigning Values to Local Varialbles with Select declare @ytdqty int, @sellprice money, @var1 int, @var2 float --initialize variables select @var1 = -68 , @var2 = 97.564

Assigning Values to Local Varialbles with Select select @ytdqty = total_sales , @sellprice = price from titles where title_id = “TC7777” declare @income money select @income = price*total_sales where title_id = “BU1032”

Restrictions on Local variables ตัวแปรใช้สำหรับเก็บค่าข้อมูลเท่านั้น ตัวแปรไม่สามารถใช้เก็บชื่อตาราง ชื่อคอลัมน์ หรือ database objects อื่น ๆ หรือคียเวอร์ต่าง ๆ ได้ ตัวแปรเก็บได้เพียงค่าเดียวเท่านั้น ถ้าไม่มีการกำหนดค่าโดยคำสั่ง Select ค่าข้อมูลในตัวแปรก็จะยังคงอยู่เหมือนเดิม ถ้ามีการกำหนดค่าด้วยคำสั่ง Select หลาย ๆ ครั้ง ตัวแปรจะเก็บค่าที่มีการกำหนดครั้งหลังสุด

Using Local variables : โปรแกรมนี้ผิดตรงไหน Declare @myvariable int select @myvariable = title from titles where title_id = “BU2075” select @myvariable

Using Local variables : โปรแกรมนี้ผิดตรงไหน select pub_id from publishers select @myvat = total_sales from titles where title_id = “BU2075” Declare @myvar int select @myvar

Global Variables เป็นตัวแปรที่ SQL Server เตรียมไว้ให้ โดยระบบจะเป็นผู้กำหนดค่าให้เอง ขึ้นต้นด้วยเครื่องหมาย “@@” ผู้ใช้ไม่สามารถกำหนดค่าให้กับ global variable ได้ Server จะเป็นผู้กำหนดให้เองโดยอัตโนมัติ

Global Variables

Using Global Variables @@rowcount ใช้สำหรับตรวจสอบจำนวนแถวที่เกิดจากคำสั่งล่าสุด @@error จะเป็นหมายเลขแสดงความผิดพลาดที่เกิดขึ้น

Example: Code using Global Variables select @@version declare @book_price money select book_price = price from titles where title_id = “BU1032” If @@rowcount = 0 -- norows returned by select print “No such title_id” else begin print “title_id exists with” select “Price of ” = @book_price end

Control-of-Flow Keywords IF…Else Begin…End While… Return… waitfor...

Control-of-Flow : If…else declare @avg_price money select @avg_price = avg(price) from titles if @avg_price < $15.00 update titles set price = price * $2 else update titles set price = price * $1.1

Control-of-Flow : begin…end declare @avg_price money select @avg_price = avg(price) from titles if @avg_price < $15.00 begin update titles set price = price * $2 printe “Prices have been doubles” end else if @avg_price >= $15 update titles set price = price * $1.1 Print “Prices increased 10%” else Print ”Print Avg Price Is Null”

Control-of-Flow : If exists and If not exists declare @lname varchar(40) select @lname = “Smith” if exists (select * from authors where au_name = @lname) select “There is a ” + @lname else select “Therer is no author called ”+ @lname

Control-of-Flow : return เป็นคำสั่งจบการทำงานของ batch, stored procedure to trigger คำสั่งที่อยู่หลัง return จะไม่ถูกทำงาน if not exists (select * from titles where title_id = @t_id ) begin print “There is no title by this title id.” return -- exit the batch end

Control-of-Flow : return if not exists (select * from titles where title_id = @t_id ) begin print “There is no title by this title id.” return -- exit the batch end insert salesdetail values (@s_id , @o_num , @t_id , @qty_sold, @desc) go

Control-of-Flow : while Repeated Execution While (Select avg(price) from titles) < $40 begin select title_id , price from titles where price > $20 update tiltes set price = price + $2 end select title_id , price from titles print “Too much for the matrkey to bear.”

Control-of-Flow : while Repeated Execute break และ continue break ใช้สำหรับออกจาก loop แต่ไม่ออกจาก batch continue ให้กลับไปที่บนสุดของ loop

Control-of-Flow : while Repeated Execute While (select avg(price) from titles) > $20 begin update titles set price = price / 2 if (select max(price) from titles) < $40 break else if (select avg(price) from titles) > $20 continue print “Average price still over $20” end select title_id, price from titles where price > $20 print “Not too Expensive”

Control-of-Flow : Event-Driven Execute Waitfor ใช้หน่วงเวลาการทำงานชั่วคราว Syntax waitfor {delay time | time time | … } waitfor delay ‘0:30:00’ -- หยุดคอย 30 นาที ส่วนมากใช้โดยโปรเซสของระบบ เพื่อการจัดการข้อมูล การจัดการกับ error การจัดการกับ event ต่าง ๆ

Returning Message Using print print “Hello” print @msg -- @msg is a local variable declare @table_name varchar(30) , declare @user_name varchar(30) select @table_name = “titles” , @user_name = “ezekiel” print “The table %1! is not owned but the user %2!.” , @table_name , @user_name

Returning Message Using raiserror raiserror ใช้สำหรับกำหนด error ที่เหมือนกับ error ที่ถูกกำหนดโดย system-generated raiserror error_number { “error message” | @local variable} [ , arg_list ] error_number จะถูกบรรจุลงใน @@error @local_variable ต้องมี datatype เป็น char หรือ varchar ใช้ raiserror เพื่อสร้างข้อความแสดงความผิดพลาดของเราเอง ข้อจำกัดคือ Error message มีความยาวไม่เกิน 255 ตัวอักษร Error number ต้องมากกว่า 20000

Returning Message Using raiserror ตัวอย่างที่ 1 Message with no arg_list raiserror 30250 “The title dose not exist” ตัวอย่างที่ 2 Message with arg_list declare @tab_name varchar(30) select @tab_name = “titles” raiserror 99999 “Table %1! Not found.”, @tab_name ตัวอย่างที่ 3 declare @err_msg char(50) select @err_msg = “I can’t do that, ” + user_name raiserror 20100 @err_msg