【发布时间】:2014-07-30 21:43:36
【问题描述】:
我有这个 SQL 语句
exec sp_executesql N'test', N'@name varchar(10)', @name=N'john'
在 SQL Server 2012 中出现错误:
过程或函数“测试”需要参数“@name”,但未提供。
过程定义为:
CREATE PROCEDURE [dbo].[test]
@name varchar(10)
AS
BEGIN
select @name
END
SQL 是从 C# 使用 SqlCommand 对象上的 BeginExecuteReader 命令生成的,并且使用以下命令将参数添加到参数集合中:
new SqlParameter("@" + parametername, sqldbType, size)
然后设置值。
是什么导致了错误?
因为 SQL 不是手动生成的,所以我正在寻找一个答案,它可以让SqlCommand 生成一个工作 SQL 或修改存储过程以使其与从 .NET 生成的 SQL 一起工作。作为测试,我为 name 参数添加了一个默认值,错误消失了,但 name 的值不存在。某处断线了。
【问题讨论】:
-
存储过程的定义和你有问题的语句,它们是什么关系?您如何在存储过程中使用
sp_executesql? -
@M.Ali 我不明白你的问题。 sp_executesql 不在 sp 里面使用。 sp_executesql 执行 sp。
标签: c# sql .net sql-server ado.net