Sql server 在SQL Server中调用存储过程的ASP参数

Sql server 在SQL Server中调用存储过程的ASP参数,sql-server,parameters,asp-classic,ado,Sql Server,Parameters,Asp Classic,Ado,我尝试在SQL Server中调用这个插入数据的存储过程 我有这个: CREATE PROCEDURE [dbo].[AddUser] @user_id bigint, @user_name varchar(20) AS BEGIN INSERT INTO [users] ([id], [name]) VALUES (@user_id, @user_name) END 我有一个ASP代码: <% Const adCmdStoredProc = 4 Const a

我尝试在SQL Server中调用这个插入数据的存储过程

我有这个:

CREATE PROCEDURE [dbo].[AddUser]
   @user_id bigint,
   @user_name varchar(20)
AS
BEGIN
   INSERT INTO [users] ([id], [name]) 
   VALUES (@user_id, @user_name)
END
我有一个ASP代码:

<%
Const adCmdStoredProc = 4
Const adBigInt = 20
Const adParamInput  = 1
Const adVarChar     = 200

Set conn = Server.CreateObject("ADODB.Connection")
connectionstring = "Provider=SQLOLEDB.1;Password=***********;Persist Security Info=True;User ID=sa;Initial Catalog=Test;Data Source=AREAWEB2-PC"
conn.Open connectionstring
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn

cmd.CommandType = adCmdStoredProc
cmd.CommandText = "{call AddUser (?,?)}"

frm_id = 1
frm_name = "Carlos"

Set prmUserId = cmd.CreateParameter("@user_id", adBigInt, adParamInput, 0, frm_id)
Set prmUserName = cmd.CreateParameter("@user_name", adVarChar, adParamInput, 20, frm_name)

Cmd.Parameters.Append prmUserId
Cmd.Parameters.Append prmUserName

Set rs = cmd.Execute 


%>

但我得到了这个错误信息:

SQL Server的Microsoft OLE DB提供程序错误“80040e10”

有什么问题吗?

如果您很快发现问题与您的参数定义有关

来自

另一个选项是将
.CommandType
更改为
adCmdText
,它将接受
{call AddUser(?,)}
格式

cmd.CommandType=adCmdText
ADO内部使用
adCmdText
作为
adCmdStoredProc
CommandTypeEnum
格式。CommandText
将更改为
{call AddUser(?)}
格式,区别在于除非指定
.CommandType=adCmdText
,否则您不能自己使用此表单。使用这两种方法都没有额外的好处,但在我看来,
adCmdStoredProc
只是简化了调用并隐藏了一些细节


代码失败,因为我有以下错误:

cmd.CommandType=adCmdStoredProc


删除它会起作用。

这是因为
CommandText
不包含存储过程名称,这就是为什么会出现参数错误。要使该命令生效,您必须使用
cmd.CommandType=adCmdText
,或者您可以更改
cmd.CommandText=“addUser”
,并保持
CommandType
不变。 Microsoft OLE DB Provider for SQL Server error '80040e10' Procedure '' expects parameter '', which was not supplied.