我编写了一个存储过程(“UpdateTable”),它接受一个参数,并在运行时将新行插入表中。
我在asp页面中有以下代码: -
dim conn
dim cmd
set conn = server.createobject("ADODB.Connection")
conn.open "Provider=SQLNCLI11;Data Source=(localdb)\Projects;Persist Security Info=False;Password=password;User ID=username;Initial Catalog=SQLLearning"
set cmd = server.createobject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = "UpdateTable"
cmd.CommandType =adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("Text",adVarChar,adParamInput, 100)
cmd("Text") = "Jessica"
cmd.Execute
当我运行此操作时,我收到以下错误: -
ADODB.Command错误'800a0bb9'
参数类型错误,超出可接受范围或相互冲突。
/sp.asp,第14行
第14行是cmd.CommandType =adCmdStoredProc
行。我尝试了很多东西,包括声明一个名为adCmdStoredProc的常量,值为4,但这仍然不起作用。有人可以指出我正确的方向吗?
'UpdateTable'代码是: -
ALTER PROCEDURE UpdateTable
@Text varchar(100)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO StoredProcTest (Text)
OUTPUT inserted.ID, inserted.Text
VALUES (@Text)
END
GO
答案 0 :(得分:0)
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandType = adCmdStoredProc
.CommandText = "UpdateTable"
.Parameters.Append .CreateParameter("@Text",adVarChar,adParamInput, 100)
.Parameters("@Text") = "Jessica"
set rs = .Execute
End With
set cmd = nothing
然后你应该能够得到类似的结果;
if not rs.eof then
response.write rs("ID")
end if