麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > ASP > 正文

asp sqlserver 執行存儲過程返回記錄集報對象關閉時

2024-05-04 11:08:48
字體:
來源:轉載
供稿:網友
asp sqlserver 執行存儲過程返回記錄集報對象關閉時不允許操作的臨時解決方法。大家有更好的方法,可以說下。
 
 
 
如果要得到返回值,需要用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調用存儲過程并返回記錄集的時候,一直報出“對象關閉時不允許操作”的錯誤,搜了很多問題,都不能對癥下藥,找了一段比較靠譜的代碼 
最后發現問題出現在存儲過程里,例子里的存儲過程沒有問題,但是用上我自己的存儲過程就報錯 
最后的解決辦法是在我自己用的存儲過程里的要在 
每個Insert語句之前都加一句set nocount on 也就是在游標循環里面加一句 
具體什么原因還沒有去深究,了解的人可以指明下,謝謝 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成在人 | 男女亲热网站 | 欧美日韩在线免费观看 | 日本中文一级片 | 成人免费福利视频 | 亚洲一区二区三区日本久久九 | 久久精品国产精品亚洲 | 亚州精品在线视频 | 在线亚洲欧美日韩 | 日韩在线欧美在线 | 特一级黄色毛片 | 久久91久久久久麻豆精品 | chinese中国真实乱对白 | 91短视频在线播放 | 欧美性videofree精品 | 黄色的视频免费看 | av在线日韩 | 日本欧美一区二区三区在线观看 | 欧美成人一区二区三区电影 | 成人在线视频精品 | 欧洲黄视频 | 双性帝王调教跪撅打屁股 | 欧美91看片特黄aaaa | gogo全球大胆高清人露出91 | 九九热久久免费视频 | 免费啪视频在线观看 | 欧美爱爱视频 | 香蕉久久久精品 | 九九午夜| 国产91久久精品一区二区 | 久久99精品国产99久久6男男 | 素人视频免费观看 | 成人免费福利网站 | 久久草草影视免费网 | 护士hd欧美free性xxxx | 一级黄片毛片免费看 | 日韩在线播放中文字幕 | 黄色小视频在线免费看 | 久久精品亚洲一区二区三区观看模式 | 欧美特一级片 | 精品国产乱码久久久久久丨区2区 |