Sql Server預存程序執行個體解決

來源:互聯網
上載者:User

任務說明及要求:

現有一個資料庫SQL Server 2000,裡麵包含著72個小時的高速公路各個收費站的資料。現要求:查詢72個小時內這個資料庫裡面的各個收費站每間隔十分鐘通過各個收費站的車輛數。例如:查詢濟南北這個收費站的情況,則統計 2005-07-22  00:00:00到2005-07-22  00:10:00 通過濟南北收費站的車輛數,統計完以後,再統計2005-07-22  00:10:00到2005-07-22  00:20:00 通過濟南北收費站的車輛數,以此類推。最好能編一個程式,能讓各個10分鐘間隔時間段通過某一收費站車輛數一目瞭然。

程式碼如下:

以下部分是為了測試SQL代碼是否正確分來步驟進行的。最終代碼只需要三四步。--第一步:一個十分鐘內的濟南北車站的數量--測試該語句的正確與否select * from trafficdata     where dot1name='濟南北'and time1>='2005-07-22  00:00:00' and time1<'2005-07-22 00:10:00'     or dot2name='濟南北' and time2>='2005-07-22  00:00:00' and time2<'2005-07-22 00:10:00';   --第二步:列印一個時間間隔的車輛數--測試該SQL Server預存程序文法語句正確與否--“@temp1=convert(varchar(3),@temp)”表示將int型變數轉化成varchar型變數create PROCEDURE GetCountasDeclare @temp1 varchar(3)Declare @temp IntSELECT @temp = COUNT(*) FROM trafficdata  where dot1name='濟南北'and time1>='2005-07-22  00:00:00' and time1<'2005-07-22 01:00:00' or dot2name='濟南北' and time2>='2005-07-22  00:00:00' and time2<'2005-07-22 01:00:00';set @temp1=convert(varchar(3),@temp)print @temp1--第三步:建立預存程序--該預存程序沒有輸入參數,將需要的資料直接列印--“DATEADD(mi, 10,@start_date )”表示函數使變數@start_date增加十分鐘--While迴圈部分 Begin--End配對  Drop PROCEDURE mysp_para  Create PROCEDURE mysp_para                           AS   Declare  @start_date  DateTime  --迴圈開始時間    Declare  @end_date DateTime   --迴圈結束時間   Declare  @temp2 varchar(3)      --用來接收每次迴圈的車輛數目 Varchar類型   Declare  @temp1 varchar(8000)   --所有迴圈的車輛數目 以逗號間隔   Declare  @temp Int              --用來接收每次迴圈的車輛數目 Int類型   Declare  @Size Int           --迴圈次數   Declare  @address varchar(10)   --收費站名稱    Set  @start_date='07 23 2005 ';    Set  @Size=0;    Set  @address='濟南北';    Set  @temp2='';    Set  @temp1='';      while (@Size<3*24*6)   Begin     Set @end_date=DATEADD(mi, 10,@start_date ); Set @temp=0;         SELECT @temp = COUNT(*) FROM trafficdata  where dot1name=@address and time1>=@start_date and time1<@end_date or dot2name=@address and time2>=@start_date and time2<@end_date; Set @temp2=convert(varchar(3),@temp); Set @temp1=@temp1+ @temp2+','; Set @start_date=@end_date; Set @Size=@Size+1 ;Endprint @end_dateprint @temp2print @temp1print @start_dateprint @Size       GO--第四步:執行   --執行該預存程序,得到2005-07-22開始三天內的所有通過濟南北的車輛資料,格式“23,3,6,3,.....”EXEC  mysp_para

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.