sp_executesql&缺少参数错误

时间:2014-07-30 21:43:37

标签: c# sql .net sql-server ado.net

我有这个SQL语句

exec sp_executesql N'test', N'@name varchar(10)', @name=N'john'

在SQL Server 2012中出错:

  

过程或函数'test'需要参数'@name',这是未提供的。

程序定义是:

CREATE PROCEDURE [dbo].[test]
    @name varchar(10) 
AS
BEGIN
    select @name
END

使用BeginExecuteReader对象上的SqlCommand命令从C#生成SQL,并使用以下参数将参数添加到参数集合中:

new SqlParameter("@" + parametername, sqldbType, size) 

然后设置值。

导致错误的原因是什么?

因为SQL不是手工生成的,所以我正在寻找一个答案,它使SqlCommand生成一个有效的SQL或修改存储过程,使其与.NET生成的SQL一起使用。作为测试,我为name参数添加了一个默认值,错误消失但名称的值不存在。某处有脱节。

1 个答案:

答案 0 :(得分:1)

尝试这种语法:

exec sp_executesql N'exec dbo.test @name',N'@name varchar(10)',@name=N'john'