數據庫存儲過程及簡單分頁知識

定義存儲過程

CREATE PROCEDURE [擁有者存儲過程名[;程序編號

利用SQL的語言可以編寫對於數據庫訪問的存儲過程,其語法如下:


CREATE PROC[EDURE] procedure_name [;number]


[


{@parameter data_type} ][VARYING] [= default][OUTPUT]



[,...n]


[WITH


{


RECOMPILE


| ENCRYPTION


| RECOMPILE, ENCRYPTION


}



[FOR REPLICATION]


AS


sql_statement [...n]


[ ]內的內容是可選項,而()內的內容是必選項,

  例:若用戶想建立一個刪除表tmp中的記錄的存儲過程Select_delete可寫爲:


Create Proc select_del As


Delete tmp

  例:用戶想查詢tmp表中某年的數據的存儲過程


create proc select_query @year int as


select * from tmp where year=@year

  在這裏@year是存儲過程的參數

  例:該存儲過程是從某結點n開始找到最上層的父親結點,這種經常用到的過程可以由存儲過程來擔當,在網頁中重複使用達到共享。

  空:表示該結點爲頂層結點


fjdid(父結點編號)

  結點非空:表示該結點的父親結點號


dwmc(單位名稱)


CREATE proc search_dwmc @dwidold int,@dwmcresultvarchar(100) output


as


declare @stop int


declare @result varchar(80)


declare @dwmc varchar(80)


declare @dwid int


set nocount on


set @stop=1


set @dwmc=""


select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdwwhere id=@dwidold


set @result=rtrim(@dwmc)


if @dwid=0


set @stop=0


while (@stop=1) and (@dwid<>0)


begin


set @dwidold=@dwid


select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdwwhere id=@dwidold


if @@rowcount=0


set @dwmc=""


else


set @result=@dwmc+@result


if (@dwid=0) or (@@rowcount=0)


set @stop=0


else


continue


end


set @dwmcresult=rtrim(@result)

  使用exec pro-name [pram1 pram2.....



-----------------------------------------------------------------

在數據庫中進行分頁操作時@pagesize
每頁有多少條數據  @pageindex你要查第幾頁的數據


select top(@pagesize) * from Ticket where not markno  in (select top(@pagesize*(@pageindex-1)) markno from ticket)這句話分爲三個部分第一部分是主句:select top(@pagesize) * from Ticket第二部分是條件:not markno 第三部分是一個子查詢 (select top(@pagesize*(@pageindex-1)) markno from ticket) 要整個解釋這句話就要如下解析主要目的是取頭X條信息:X由pagesize的值決定;接着我們要限定一個條件,not markno in這其實是一個否定,mark no不在某些範圍內的,接着我們要限定markno 不在的範圍是哪些呢?就是select top(@pagesize*(@pageindex-1)) markno from ticket取前 @pagesize*(@pageindex-1) 的makrkno的值SQL的執行順序按照括號優先級,從內自外執行的,所以執行的順序及結果就是——先取出前n-1行數據的markno,然後取出不包含這些markno的數據,最後從這裏面取出前10行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章