學學習網 手機版

學學習網

學習路徑: 學習首頁 > 數據庫 > Sybase >

第七節 數據庫編程基礎

設置字體:
----------------------------------
一、批處理

SQL Server可以處理作為一批而提交的多個SQL語句,既可以是交互式的,也可以是一個文件。批處理SQL語句由批結束標志終止,該標志指示SQL Server從前面開始執行該批處理語句,對于獨立的SQL實用程序isql而言,其批結束標志為單獨占一行的“go”。
舉例:選擇表title及表authors的行數
select count(*) from titles
select count(*) from authors
go

二、流程控制語言

1.變量聲明與賦值
全局變量由系統預定義,以符號@@打頭。
局部變量聲明使用Declare語句,這個變量必須以符號@開頭,后跟一個標識符。
Declare @變量名  數據類型[,@變量名  數據類型,……]
變量賦值使用Select語句,未賦值的變量其值為Null。
舉例:
Declare @msg char(50)
Select @msg=’How are you?’
Select @msg=emp_name from employee
  Where emp_id=12345678

2.SQL語句塊
Begin
Statement Block/*多個順序執行的SQL 語句*/
End

3.條件語句
If 條件表達式
 語句(塊)
Else
 語句(塊)
舉例:
if(select max(id) from sysobjects)<50
 print ‘數據庫里沒有用戶創建的對象‘
else
 select name,type,id from sysobjects where id>50

4.循環語句
While 條件表達式
   語句(塊)
●兩個特殊的循環控制語句:
 Continue 執行下一次循環
 Break    退出當前循環
舉例:
While(select avg(price) from titles)>$20
 Begin
  Update titles set price=price/2
  If(select avg(price) from titles)<$40
    Break
  Else
    Continue
End

5.其它控制語句
◇Return語句——無條件結束當前過程,并可返回給調用者的一個狀態值:Return[整數表達式]
◇Print語句
◇RaiseError語句
◇Waitfor語句

三、存儲過程

   存儲過程是存儲在服務器端的一類數據庫對象,它實質上是一段用SQL語言編寫的程序,它在服務器端預先經過編譯,并確定出執行計劃,因此與同樣功能的批處理語句相比,它的執行速度較快。
基本語法:
Create Procedure[owner.]過程名
[@參數名  數據類型[=默認值][Output]]
[,@參數名  數據類型[=默認值][Output]]
[……]
AS
Begin
 SQL語句(塊)
End
存儲過程是數據庫對象,和表、索引是一個級別的;是SQL語句和控制流語言的集合,存儲過程在首次運行時被編譯,并駐留在過程高速緩存的內存中,所以存儲過程的招待非常快。存儲過程可以帶參數,可以調用其他過程,返回狀態值,返回參數值,并且可以在遠程SQL Server執行。可以在遠程SQL Server執行對數據庫設計有特別重要的意義。SQL Server提供的存儲過程稱為系統過程。
存儲過程大大增強了SQL的能力、效率和靈活性,經過編譯的存儲過程極大地改善SQL語句和批處理的性能。
存儲過程有很多優點:
●存儲過程在第一次執行時編譯,并存儲在過程高速緩存的內存中。編譯時系統對其進行優化,以選擇最佳的路徑來訪問數據集中的數據,這種優化考慮了數據集的實際數據結構。因此存儲過程大大提高了系統的性能。
●存儲過程可以跨服務器運行。這一點是通過觸發器來實現的,當然,首先存儲過程要能登錄到該遠程服務器。
●應用程序也能執行存儲過程,從而實現服務器和客戶之間的協同作業。
●存儲過程減少了網絡的交通。這是因為存儲過程的文本存儲在數據庫里,調用存儲過程時通過網絡的只是存儲過程的過程名。
●利用存儲過程可以提供一個附加的安全層。
如(該例子取自pubs2數據庫):
Create proc titleid_proc(@title_id varchar(80))
As
Begin
     Select @title_id=lower(@title_id)+”%”
 Select title,title_id,price
   form titles
   Where lower(title_id) like @title_id
Return @@rowcount
End
   注意例子中的黑體部分,這實際上是一條賦值語句。該存儲過程有返回值。
存儲過程可以變得非常復雜。我們認為,創建存儲過程還是要遵循“最簡單就是最好”的原則。建議在創建存儲過程時采用縮進風格,否則創建的存儲過程三天之后連自己都看不懂。
----------------------------------
課程列表
重點難點
贊助鏈接
倾国妲己官网 河南十一选五怎么加盟 广东体育彩票11选5 江苏快3助赢软件 安徽十一选五开奖直播现场 二分彩是哪里开奖的 棋牌app下载 广州体彩网官方首页 36棋牌官网手机最新下载 快乐8注册网址 在郑州四个月做什么赚钱 福建十一选五手机版走势图连线 还能赚钱吗 求前辈了解 新疆11选5现场开奖结果 北京晒车pk10牛牛 大嘴棋牌游戏下载 极速快3下载安装