asp第一次调用存储过程,有点问题,帮忙看一下。
纯粹是为了学习,表很简单,表名test,就一个test字段,char(10)
存储过程如下
CREATE PROCEDURE [testinsertnew]
@test [char](10)
AS
SET NOCOUNT ON
INSERT INTO [test]([test])
VALUES (@test)
GO
asp文件如下
<!--#include file="conn.asp"-->
<!--#include file="adovbs.inc"-->
<%
test="abc"
Dim oCommand
Dim oRs
Set oCommand = Server.CreateObject("Adodb.Command")
Set oRs = Server.CreateObject("Adodb.Recordset")
Set oCommand.ActiveConnection = Conn
oCommand.CommandType = adCmdStoredProc
oCommand.CommandText = "testinsertnew"
oCommand.Parameters.Append oCommand.CreateParameter("test", adChar, adParamInput, 10)
oCommand.Parameters.Append oCommand.CreateParameter("returncode", adInteger, adParamReturnValue, 4)
'Set each input parameter's value here...
With oRs
.CursorType = 3
.LockType = 3
.CursorLocation = 3
End With
Set oRs = oCommand.Execute()
'Close and Dispose Object
Set oCommand = Nothing
%>
提示错误
[Microsoft][ODBC SQL Server Driver][SQL Server]过程 'testinsertnew' 需要参数 '@test',但未提供该参数。
Set oRs = oCommand.Execute()这个地方有毛病。
什么问题呢??
------解决方案--------------------oCommand.Parameters.Append oCommand.CreateParameter("@test", adChar, adParamInput, 10)
------解决方案--------------------1,在你的存储过程中只有一个参数
oCommand.Parameters.Append oCommand.CreateParameter("returncode", adInteger, adParamReturnValue, 4)
这是一个错误,如果改存储过程也可写成
oCommand.Parameters.Append oCommand.CreateParameter("@returncode",3,2)
3是整型
2是adparaminput输出
2,
oCommand.Parameters.Append oCommand.CreateParameter("test", adChar, adParamInput, 10)
要改成
oCommand.Parameters.Append oCommand.CreateParameter("@test",200,2,10)
200代表字符串
2是输出
你也可以在前面预定义常量
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200
试试吧