ASP参数以调用SQL Server中的存储过程

卡洛斯

我尝试在插入数据的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 


%>

但我收到此错误消息:

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

怎么了 ?

用户名

如果您使用Google错误代码,80040e10那么很快就会发现问题出在以下与您的参数定义有关的问题之一:

为什么我得到80040E10错误?

SQL Server错误“ 80040e10”的Microsoft OLE DB提供
程序过程“需要参数”,但未提供。

您的问题很可能是由于0@user_id参数中传递了大小,因为所有参数都必须使用.CreateParameter()或在将参数附加到使用using.Size属性添加到集合中之前传递最大大小


更新:

正如OP指出的,问题实际上是由于设置了错误的CommandType属性值。

认为有必要扩大答案以解释原因。原因是CommandType在OP的示例中将设置为,adCmdStoredProc但未将.CommandText属性设置为存储过程的名称,更正此错误(而不是删除.CommandType的最简单方法是更改.CommandText

cmd.CommandText = "AddUser"

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

cmd.CommandType = adCmdText

内部ADO使用adCmdTextadCmdStoredProc CommandTypeEnum作为.CommmandText将得到改变的格式{call AddUser (?,?)},不同的是你自己,除非你指定你不能用这种形式.CommandType = adCmdText使用这两种方法都没有任何其他好处,但是我认为adCmdStoredProc这只是简化了通话并向您隐藏了细节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Server 中存储过程的可选参数

存储过程从SQL Server中的存储过程本身获取价值

SQL Server:存储过程中的IF THEN ELSE

SQL Server 2012中的存储过程

在SQL Server中运行多个存储过程

SQL Server中的功能与存储过程

在SQL Server中获取存储过程的文本

AWS中的SQL Server CLR存储过程

SQL Server存储过程中的错误

在SQL Server中执行存储过程?

SQL Server存储过程中的IF条件

存储过程SQL Server中的多个条件

带有未在 SQL Server Management Studio“执行存储过程”或“脚本存储过程”中显示的可选参数的存储过程

SQL Server存储过程参数

SQL Server:从调用其他存储过程的存储过程中捕获临时表

如何在Xamarin中从Android调用SQL Server存储过程

如何在SQL Server中检查调用存储过程

使用 SQL Server 中的可为空参数执行存储过程

将参数添加到SQL Server中的存储过程

sql server存储过程中的xml参数

如何在SQL Server 2012中的普通存储过程中找出存储过程名称

如何使用存储过程调用Web服务,该存储过程返回json并使用sql server将数据存储在表中?

在SQL Server中使用空数据参数调用存储过程

SQL Server 中存储过程中的连续 While 循环

在SQL Server中的存储过程中搜索文本

在SQL Server中的存储过程中读取xml的问题

如何获取sql server存储过程结果以在其他存储过程中处理?

使用输出参数在 ASP.NET 中调用 SQL 存储过程

如何在SQL Developer中执行SQL Server存储过程?