经典ASP - 存储过程错误

时间:2014-06-12 20:27:57

标签: sql sql-server stored-procedures asp-classic

我编写了一个存储过程(“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

1 个答案:

答案 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