asp預存程序使用大全

來源:互聯網
上載者:User

1,調用沒有參數的預存程序
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn
set cmd.ActiveConnection=conn

cmd.CommandText="{call nono}"

'set rs=cmc.exe 或者cmd.execute

set rs=cmd.Execute()

%>
2,一個輸入的參數的預存程序
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn
set cmd.ActiveConnection=conn

cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100

cmd.Execute()

%>
3,一個輸入參數和一個輸出的參數
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn
set cmd.ActiveConnection=conn

cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)

cmd.Execute()

bbb=cmd("@bbb")
%>
4,一個輸入參數,一個輸出參數,和一個傳回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn
set cmd.ActiveConnection=conn

cmd.CommandText="{?=call onereturn(?,?)}"

cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnValue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)

cmd.Execute()

bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>

如何在ASP中調用SQL預存程序
www.lucky365.net 2002-2-7 吉祥365

<%set connection1 = Server.CreateObject("ADODB.Connection")
connection1.open ... '聯結
set command1=Server.CreateObject("ADODB.command")
set command1.activeconnection=connection1
command1.commandtype=4
command1.commandtext="sp_1" 'SP 名
command1.parameters(1)=... '參數值
command1.parameters(2)=...
set recordset1=command1.execute()
%>

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調用帶參數預存程序的幾種方式

作者:中國論壇網收集 來源:http://www.51one.net 加入時間:2004-8-25  

作者: 討飯貓

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程式如下:

<%@ Language=VBScript %>
<%
Dim CmdSP
Dim adoRS
Dim adCmdSPStoredProc
Dim adParamReturnValue
Dim adParaminput
Dim adParamOutput
Dim adInteger
Dim iVal
Dim oVal
Dim adoField
Dim adVarChar

‘這些值在 VB 中是預定義常量,可以直接調用,但在 VBScript 中沒有預定義
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200

iVal = 5
oVal = 3

''建一個command對象
set CmdSP = Server.CreateObject("ADODB.Command")

''建立連結
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"

''定義command 對象調用名稱
CmdSP.CommandText = "sp_PubsTest"

''設定command調用類型是預存程序 (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc

''往command 對象中加參數
''定義預存程序有直接傳回值,並且是個整數,省缺值是4
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
''定義一個字元型輸入參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
''定義一個整型輸入參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
''定義一個整型輸出參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)

''運行預存程序,並得到返回記錄集
Set adoRS = CmdSP.Execute

''把每個記錄列印出來,其中的欄位是虛擬,可以不用管
While Not adoRS.EOF

for each adoField in adoRS.Fields
Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
Next
Response.Write "<br>"
adoRS.MoveNext
Wend

''列印兩個輸出值:
Response.Write "<p>@intIDOut = “ & CmdSP.Parameters("@intIDOut").Value & "</p>"
Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"

''大掃除
Set adoRS = nothing
Set CmdSP.ActiveConnection = nothing
Set CmdSP = nothing
%>

此外還有其他方式,稍微偏門一些,以後慢慢再說
本文參考了多篇文章,這裡不一一列出。

在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的文檔資源。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.