一直都不知到啥是預存程序,後來大概知道它是做什麼用的,直到現在才開始面對它,大概了解一下它怎麼用。

 

出處:http://yes.nctu.edu.tw/SQL/StoredProcedure/StoredProcedure.htm

撰寫 Stored Procedures

利用 ADO 來存取資料庫是一件既輕鬆又簡單的工作, 不過有的時候又臭又長的 SQL 敘述實在很煩人, 這篇文章將介紹如何利用 Stored Procedure 來簡化你的 ASP 程式

本質上 Stored procedures (有時又稱 Sproc) 就是儲存在資料庫中的 Script 或 Batch, 撰寫 Sproc 並不是太難的一件事, 通常你會這樣查詢資料庫

Select * From Table

如何將它變成 Sproc? 以下是簡單的例子

Create Proc sp_SprocName1
As
  Select * From Table
Go

現在 Sproc 已成功的建立, 你可以試著去執行它

Exec sp_SprocName1

你可以為你的 Sproc 取任何的名字, 在 SQL 7.0 的命名原則以 128 個字元為限, SQL 並不規定 Stores procedure 之命名要以 sp_ 開頭, 但強烈建議你這麼做!

接下來我們再做些例子, 例如在查詢中加入 where 子句, Select * From Table Where Column1 = 0 , 這裡你是不是會覺得 Column1 的值如果可以改為一個輸入參數由我們輸入, 那就更加完美!

Create Proc sp_SprocName2
@MyInput int
As
  Select * From Table
  Where Column1 = @MyInput
Go

完整的參數宣告語法為

@parameter_name datatype [= default|Null] [Varying] [Output]

如果你未提供 default 值, 則這個參數會被假設為必要輸入的, 在宣告參數時你還必須指定資料型態, 應為合法的 SQL Server 資料型態

在 Sproc 接收到輸入值後, 便將它存放在 @MyInput 變數中, 變數以 @ 符號開頭, 以 @@ 開頭的則為全域變數, 你可以這麼執行這個 Sproc

Exec sp_SprocName2 0

我們再來看一個 Insert 的例子

Create Proc sp_SprocName3
  @Column1 varchar(20)
  @Column2 varchar(36) = Null
As
  Insert Into Table
  Values
    (@Column1, @Column2)
Go

在這例子中, Column2 的值即為選擇性輸入, 你可以這麼執行

Exec sp_SprocName3 'SomeString'

最後要告訴你如何在 ASP 中使用 Stored procedure, 不使用 Sproc 時你會這麼做

Set oConn = Server.CreateObject("Adodb.Connection")
oConn.Open YpurDSN
sSQL = "Select * From Table"
Set oRs = oConn.Execute(sSQL)

使用 Sproc 時, 這樣改就可以了

Set oConn = Server.CreateObject("Adodb.Connection")
oConn.Open YourDSN
sSQL = "sp_MySproc"
Set oRs = oConn.Execute(sSQL)

如果你的 Sproc 需要輸入參數, 你可以這麼做

Set oConn = Server.CreateObject("Adodb.Connection")
oConn.Open YourDSN
sSQL = "sp_MySproc " & MyInput
Set oRs = oConn.Execute(sSQL)

是不是很簡單呢!

希望這篇文章對你有幫助!

No Money No Hone 發表在 痞客邦 PIXNET 留言(0) 人氣()