SQL 存儲過程入門(五)


      好久沒來博客園留下點東西,忙到找工作,最近把工作落實了。

      最近公司的業務都是存儲過程開發,發現去維護起來相當困難。

      由於是維護項目,產品很久前都發布了,然而有一些修改,讓我們去修改現在的邏輯,去看懂人家的邏輯是件痛苦的事情,況且對整個業務基本不了解,表的字段啊,

      表之間的聯系,都是雲里霧里。然而,把業務邏輯寫在存儲過程里面,隨便一個存儲過程都是千兒八百行,表示很無奈。 

   

 

      這里就個人對存儲過程的看法而言,

    1,在存儲過程寫業務,不是合理的途徑。

    2,在SQL中寫的SP,換到Oracle ,MySql中,都無法使用,移植性差。

    3,調試雖然可以使用查詢分析器,發現還是不好調試。

 

   當然優點一大堆,什么效率高啊,速度快啊,安全性高啊,對於復雜計算確實是很方便,畢竟在c#算法中需要若干個sql語句,

 在存儲過程中就可以一步到位,這里就不多說了。

   

   其實存儲過程語法是很簡單的,定義Declare,變量類型也就那些常用的varchar ,char ,int,bigint, 條件判斷IF Else, While .里面是沒有FOR循環這個概念的。

  當然是用while循環已經非常足夠了。

   

  還有就是使用SQL中的系統函數,這個是相當方便

  舉個簡單例子,如果要查詢時間間隔等於好多的,或者是等於當前時間的,用過的都知道,時間有年月日時分秒毫秒,所以要等起來的話還是需要轉換的,

比如用Convert(....)之類的,用系統函數方便多了,

 

 

Datediff()函數,獲取時間差,


DATEDIFF ( datepart , startdate , enddate )

datepart

是指定所跨邊界類型的 startdate 和 enddate 的一部分。 下表列出了所有有效的 datepart 參數。 用戶定義的變量等效項是無效的。

 

datepart

縮寫

year

yy, yyyy

quarter

qq, q

month

mm, m

dayofyear

dy, y

day

dd, d

week

wk, ww

hour

hh

minute

mi, n

second

ss, s

millisecond

ms

microsecond

mcs

nanosecond

ns

       startdate

是一個可以解析為 timedatesmalldatetimedatetimedatetime2 或 datetimeoffset 值的表達式。 date 可以是表達式、列表達式、用戶定義的變量或字符串文字。 從 enddate 中減去 startdate

為避免不確定性,請使用四位數年份。 有關兩位數年份的信息,請參閱配置兩位數年份截止服務器配置選項

enddate

請參閱 startdate

 1 SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
 2 
 3 -----
 4 DiffDate
 5      1
 6 
 7 SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
 8 
 9 
10 
11  ------
12 DiffDate
13     -1

 
        

DAY()MONTH()YEAR()函數

這三個函數分別返回以整數表示的datetime或者smalldatetime類型值的日、月、年。它們的用途很廣泛,如可以創建獨特的個性化日期格式。假設需要創建一個自定義的日期值作為字符串,通過將這三個函數的輸出結果轉換成字符類型,然后進行連接操作,就可以對輸出結果以任何形式進行組合了:

  SELECT 'Year: ' + CONVERT(varchar(4), YEAR(GETDATE()))  

    + ', Month: ' + CONVERT(varchar(2), MONTH(GETDATE()))  

    + ', Day: ' + CONVERT(varchar(2), DAY(GETDATE()))

The result:

Year: 2013, Month: 8, Day: 28

 

   系統函數很多,具體的可以去查看MSDN,這個還真的好用。

 

   所以,個人覺得存儲過程比較實用的地方:

1,報表中,實用存儲過程方便。

2,系統中復雜的運算,可以使用,否則在代碼中需要若干計算,多次連接數據庫,這樣很消耗性能。

 

   關於存儲過程的所有文章基本就說到這了,希望能幫助正在學習的人,祝看博客的人天天有個好心情哈!

  如果您有任何關於存儲過程的問題和不同見解,歡迎留下你的足跡。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM