我有这个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参数添加了一个默认值,错误消失但名称的值不存在。某处有脱节。
答案 0 :(得分:1)
尝试这种语法:
exec sp_executesql N'exec dbo.test @name',N'@name varchar(10)',@name=N'john'