Sql server 在SQL Server中调用存储过程的ASP参数
我尝试在SQL Server中调用这个插入数据的存储过程 我有这个: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
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.