iT邦幫忙

DAY 23
4

從零開始開發Web應用程式系列 第 23

Web應用程式開發-SQL Function

  • 分享至 

  • xImage
  •  

接下來要針對SQL資料庫有關程式設計時會用到的幾個功能簡單的說明,首先是Function的建立,他和一般程式設計時建立的class中的method很相似,只是一個是寫在程式的架構中,可以給多個其他的程式呼叫,而資料庫中也可以建立function的功能,讓程式透過sql語法呼叫,而ftnction中可以將sql要處理的事情處理掉,程式只要呼叫資料庫的function即可,讓程式碼更精簡,在管理上也有益處,當邏輯或資料庫欄位要異動時,程式不必去變更,只要想辦法去修改fucntion中的處理邏輯獲回傳的資料處理即可,當然這只是眾多解決方案的其中一個,可以運用的方式.

以一個簡單的例子來說明:
CREATE FUNCTION TestFunction( @BaseDate datetime )
RETURNS @ResultTable TABLE
(
NAME VARCHAR(50),
ID INT,
ADDR VARCHAR(50),
SEX CHAR(10),
MONEY FLOAT,
STARTDATE DATETIME
)
AS
BEGIN
INSERT @ResultTable
SELECT NAME , ID , ADDR , SEX ,MONEY , STARTDATE

FROM TABLE1
WHERE STARTDATE > @BaseDate
RETURN
END

上面是建立一個名為TestFunction的function,傳入一個時間形態的資料,經過處理後回傳一個自定義的ResultTable,就像一般下select sql語法一般,回傳的是一個資料集合,程式接到回傳後便可以加以運用,

這是其中一個解決方案.至於用的習慣,看個人而定,有人不喜歡用funciton,喜歡用stored procedure,有人都不喜歡用,覺得stored procedure太難寫,故用基本的sql去處理,雖然有安全性和效能性的差異,不過端看如何設計的架構,沒有完全的絕對性,像stored procedure的語法並不直覺,但.net 有CLR,就是用C#的語法來寫stored procedure,寫好編譯之後,將他註冊回資料庫,因為C#處理資料的語法比較通俗,這也是一種解法,
然後要如何學習,學習到什麼程度,端看個人的觀點,若是可以自己決定開發的架構和方式, 那當然只要學擅長的一兩種解決方案即可,但若是常派到各個不同的客戶端去工作的類型的,那就要學的廣一些,因為很多事情是由客戶決定的,依照客戶的習慣性,認為什麼方式比較好,也只能依照客戶的想法做,因此這種類型的就要學的廣一些,各種解決方案都要多少會一些, 會多會少而已, 至少當用到的時候, 不會完全沒有底,找不到方向也摸不著頭緒..


上一篇
Web應用程式開發-C#資料型態對映DB資料型態
下一篇
Web應用程式開發-SQL Trigger
系列文
從零開始開發Web應用程式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言