ASP調用存儲過程的技巧

導讀:
  1、最簡單的如下
  Dim objConn
  Set objConn = Server.CreateObject('ADOBD.Connection')
  objConn.Open Application('Connection_String')
  'Call the stored procedure to increment a counter on the page
  objConn.Execute 'exec sp_AddHit'
  沒有參數,沒有返回,沒有錯誤處理,就是這個了
  2、帶參數的一種調用
  objConn.Execute 'exec sp_AddHit 'http://www.aspalliance.com', 1'
  請注意分割參數,該方法也不返回記錄
  3、返回記錄的
  Dim objConn
  Dim objRs
  Set objConn = Server.CreateObject('ADOBD.Connection')
  Set objRs = Server.CreateObject('ADOBD.Recordset')
  objConn.Open Application('Connection_String')
  'Call the stored procedure to increment a counter on the page
  objRs.Open objConn, 'exec sp_ListArticles '1/15/2001'
  'Loop through recordset and display each article
  4、……
  Dim objConn
  Dim objCmd
  'Instantiate objects
  Set objConn = Server.CreateObject('ADODB.Connection')
  set objCmd = Server.CreateObject('ADODB.Command')
  conn.Open Application('ConnectionString')
  With objCmd
  .ActiveConnection = conn 'You can also just specify a connection string here
  .CommandText = 'sp_InsertArticle'
  .CommandType = adCmdStoredProc 'Requires the adovbs.inc file or typelib meta tag
  'Add Input Parameters
  .Parameters.Append .CreateParameter('@columnist_id', adDouble, adParamInput, , columnist_id)
  .Parameters.Append .CreateParameter('@url', adVarChar, adParamInput, 255, url)
  .Parameters.Append .CreateParameter('@title', adVarChar, adParamInput, 99, url)
  .Parameters.Append .CreateParameter('@description', adLongVarChar, _
  adParamInput, 2147483647, description)
  'Add Output Parameters
  .Parameters.Append .CreateParameter('@link_id', adInteger, adParamOutput, , 0)
  'Execute the function
  'If not returning a recordset, use the adExecuteNoRecords parameter option
  .Execute, , adExecuteNoRecords
  link_id = .Parameters('@link_id')
  End With
  5、存儲過程的代碼
  Create PROCEDURE dbo.sp_InsertArticle
  (
  @columnist_id int,
  @url varchar(255),
  @title varchar(99),
  @description text
  @link_id int OUTPUT
  )
  AS
  BEGIN
  Insert INTO dbo.t_link (columnist_id,url,title,description)
  VALUES (@columnist_id,@url,@title,@description)
  Select @link_id = @@IDENTITY
  END
  ASP調用帶參數存儲過程的幾種方式
  最近有很多的朋友問到調用存儲過程的問題,這裏簡單介紹幾種ASP調用帶參數存儲過程的方法。
  1 這也是最簡單的方法,兩個輸入參數,無返回值:
  set connection = server.createobject('adodb.connection')
  connection.open someDSN
  Connection.Execute 'procname varvalue1, varvalue2'
  '將所有對象清爲nothing,釋放資源
  connection.close
  set connection = nothing
  2 如果要返回 Recordset 集:
  set connection = server.createobject('adodb.connection')
  connection.open someDSN
  set rs = server.createobject('adodb.recordset')
  rs.Open 'Exec procname varvalue1, varvalue2',connection
  '將所有對象清爲nothing,釋放資源
  rs.close
  connection.close
  set rs = nothing
  set connection = nothing
  3 以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
  首先說明,返回值有兩種。一種是在存儲過程中直接return一個值,就象C和VB的函數返回值那樣;另一種是可以返回多個值,存
  儲這些值的變量名稱需要在調用參數中先行指定。
  這個例子要處理多種參數,輸入參數,輸出參數,返回記錄集以及一個直接返回值(夠全了吧?)
  存儲過程如下:
  use pubs
  GO
  -- 建立存儲過程
  create procedure sp_PubsTest
  -- 定義三個參數變量,注意第三個,特別標記是用於輸出
  @au_lname varchar (20),
  @intID int,
  @intIDOut int OUTPUT
  AS
  Select @intIDOut = @intID + 1
  Select *
  FROM authors
  Where au_lname LIKE @au_lname + '%'
  --直接返回一個值
  RETURN @intID + 2
  調用該存儲過程的asp程序如下:
  此外還有其他方式,稍微偏門一些,以後慢慢再說
  本文參考了多篇文章,這裏不一一列出。
  在Asp中使用存儲過程
  爲了提高Asp程序的效率,有時需要在Asp中使用使用Sql Server的存儲技術,下面簡單作一個介紹。
  存儲過程的建立
  這裏只簡單介紹如何在Sql Server的企業管理器中如何建立存儲過程:
  (1)打開企業管理器Enterprise manager
  (2)選擇服務器組(SQL Server Group)、服務器、數據庫(Database)以及相就的數據庫,鼠標右擊對應數據庫下的Stored Procdures項,在彈出的菜單中選擇New Stored Procedure,在Stored Procedures Properties中輸入建立存儲過程的語句。下面是一個例子:
  Create PROCEDURE proctest @mycola Char(10),@mycolb Char(10),@mycolc text  AS
  Insert into chatdata (mycola,mycolb,mycolc) values(@mycola,@mycolb,@mycolc)
  在Sql Server的文檔中它的語法爲:
  Create PROC[EDURE] procedure_name [;number]   [
  {@parameter data_type} [VARYING] [= default] [OUTPUT]   ]
  [,...n]  [WITH    {   RECOMPILE   | ENCRYPTION
  | RECOMPILE, ENCRYPTION   }  ]  [FOR REPLICATION]  AS
  sql_statement [...n]
  如果你對Sql語法不熟悉,可以使用Check Syntax來檢查語法。在上例中,表示建立存儲過程名爲mycola,帶3個參數的存儲過過程,其中第一個參數mycola數據類型爲char,寬度10;第2個參數數據類型爲char,寬度爲10,第3個參數數據類型爲text,在這裏使用的是Sql Server的數據類型。
  存儲過程建立後,下面就是如何在Asp程序中調用該存儲過程:在Asp中調用存儲過程 爲了提高Asp程序的效率,有時需要在Asp中使用使用Sql Server的存儲技術,下面簡單作一個,在上面的增加參數的語句p.Append cm.CreateParameter('@mycolc',201,1,250)中,格式爲:
  p.Append cm.CreateParameter('參數名稱',類型,方向,大小)
  參許參數值的類型的意義如下:
  名稱值 整數值 功能
  adDBTimeStamp 135 日期時間數據類型
  adDecimal 14 十進制整數值
  adDouble 5 雙精度小數值
  adError 10 系統錯誤信息
  AdGUID 72 全域性唯一識別字(Globally unique identifier)
  adDispath 9 COM/OLE自動對象(Automation Object)
  adInteger 3 4字節有符號整數
  adIUnknown 13 COM/OLE對象
  adLongVarBinary 205 大型2字節值
  adLongVarChar 201 大型字符串值
  adLongVarWChar 203 大型未編碼字符串
  adNumeric 131 十進制整數值
  adSingle 4 單精度浮點小數
  adSmallInt 2 2字節有符號整數
  adTinyInt 16 1字節有符號整數
  adUnsignedBigInt 21 8字節無符號整數
  adUnsignedInt 19 4字節無符號整數
  adUnsignedSmallInt 18 2字節無符號整數
  adUnsignedTinyInt 17 1字節無符號整數
  adUserDefined 132 用戶自定義數據類型
  adVariant 12 OLE對象
  adVarBinary 204 雙字節字符變量值
  adVarChar 200 字符變量值
  advarchar 202 未編碼字符串變量值
  adWchar 130 未編碼字符串
  方向值的意義如下:
  名稱值 整數值 功能
  adParamInput 1 允許數據輸入至該參數當中
  adParamOutput 2 允許數據輸出至該參數當中
  adParamInputOutput 3 允許數據輸入、輸出至該參數當中
  adparamReturnValue 4 允許從一子程序中返回數據至該參數當中
  更多詳細資源請參考Sql Server的文檔和IIS的文檔資源。
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1789999

本文轉自
http://blog.csdn.net/educast/archive/2007/09/18/1789999.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章