【发布时间】:2014-06-12 20:27:56
【问题描述】:
我编写了一个存储过程(“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
【问题讨论】:
-
粘贴
UpdateTable过程 -
还有一个建议;在您的存储过程中,这一行
INSERT INTO StoredProcTest (Text)这里Text是一个保留字。尝试转义它说INSERT INTO StoredProcTest ([Text]) -
可能很傻,但尝试使用
Set cmd.ActiveConnection = conn,即添加“Set”,因为它是一个对象,试图在没有“Set”的情况下设置它可能会导致奇怪的问题。
标签: sql sql-server stored-procedures asp-classic