繁体   English   中英

如何使用ExecuteSqlCommand从SQL存储过程获取值列表

[英]How to get list of values from SQL stored procedure using ExecuteSqlCommand

我正在尝试使用以下SQL存储过程基于输入参数在SQL表中获取值列表作为输出。

CREATE PROCEDURE GetFirstNames
  @LastName nvarchar(128),
  @FirstNames nvarchar(128) OUTPUT
  AS
  SET @FirstNames = (SELECT FirstName FROM NamesTable WHERE LastName = @LastName)
GO

我正在使用以下代码从表中获取名字的列表。

SqlParameter lastNameParam = new SqlParameter("@LastName", "Smith");
SqlParameter firstNamesParameter = new SqlParameter("@FirstNames", SqlDbType.NVarChar, 128);
firstNamesParameter.Direction = ParameterDirection.Output;
string sql = String.Format("EXEC dbo.GetFirstNames {0}, {1};",
    lastNameParam.ParameterName,
    firstNamesParameter.ParameterName);
context.Database.ExecuteSqlCommand(sql, lastNameParam, firstNamesParameter);

当我调用ExecuteSqlCommand方法时,出现以下错误:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
  1. 如何解决查询错误,以便获得名字列表?
  2. 如何返回此列表并在我的C#代码中使用它?

如果有人可以帮助我,我将非常感激。 谢谢。

CREATE PROCEDURE GetFirstNames
  @LastName nvarchar(128)
  AS
SET NOCOUNT ON
SELECT FirstName FROM NamesTable WHERE LastName = @LastName
GO

将修复查询部分,并为您提供可枚举的结果集。 其余的是OP的练习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM