当前位置: 首页 > 面试题库 >

是否可以使用LINQ从存储过程中返回返回值和结果集

顾永福
2023-03-14
问题内容

寻找关于获取返回值和结果集的最干净方法的建议(不将引用的参数传递给存储的proc)。

MY存储的proc具有返回值以显示错误等,并且它们以select语句结尾以获取信息。使用常规命令,我将创建一个包含返回值的输出参数。我无法更改数据库中存储的proc,因此除了返回值之外,我无法传递其他输出参数。

想法??


问题答案:

在LINQ to SQL DataContext设计器中通过从服务器资源管理器中拖动存储过程来创建存储过程时,设计器将分析该存储过程,以确定它是否返回结果集。除非它具有沉重的动态SQL,否则通常都是这样。

如果是这样,则生成的方法将返回ISingleResult<T>whereT是根据对sproc进行分析以生成适合结果集形状的类,或者是在sproc属性页中指定的类。因为ISingleResult从派生IEnumerable,大多数人对结果进行简单的foreach以获得他们的结果集。但大多数人忘记的是,ISingleResult

派生自IFunctionResult,其中有一个叫做财产ReturnValue这是sproc的返回值。

因此,您所要做的只是以下几方面的事情:

using(var dc = new MyDataContext())
{
    var results = dc.MyStoredProcedure();
    var returnValue = (int)results.ReturnValue; // note that ReturnValue is of type object and must be cast.
    foreach(var row in results)
    {
        // process row
    }
}


 类似资料:
  • 问题内容: 我需要一个SP来返回多组结果。第二组结果将基于第一组结果的一列。 所以: 如何用我的SP返回@ myTable1和@ myTable2?这种语法完全正确吗? 抱歉,我仍然是SQL的新手… 编辑: 因此,我在下面的代码的最后一行看到错误:“必须声明标量变量“ @ myTable1”” 如果我突出显示并运行代码直到第二个代码,它就可以正常工作。 EDIT2: 解决了该问题。谢谢你们。 问题

  • 问题内容: 由于某些奇怪的原因,我无法从Python测试应用程序中的callproc调用中获得结果。MqSQL 5.2.47中的存储过程如下所示: 现在,在Python 3.3中使用PyCharm时,在调用此存储过程时似乎什么也找不到。这段代码为我提供了预期的结果: 但是这段代码带有cursor.fetchall()或cursor.fetchone()… …返回“ mysql.connector.

  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 我有一个存储过程,它接受参数并返回一个长值。 我如何使用jdbcTemplate来调用这个存储过程并获得返回的值。 这样对吗?

  • 问题内容: MySql存储过程/函数可以在不使用临时表的情况下返回表吗? 创建以下过程 然后用 显示示例表-正如预期的那样-但似乎无法进行以下操作: 是否可以从存储过程/函数中返回查询结果表,如果可以,怎么办? 问题答案: 就目前而言,这是不可能的。 以下是该子句中可能使用的 文档: 如您所见,存储过程不在此列表中。

  • 问题内容: 我正在使用Spring的JdbcTemplate和StoredProcedure类。我无法让存储过程类为我工作。 我在oracle数据库上有一个存储过程。它的签名是 哪里 我创建了以下存储过程类以从oracle过程获取信息 我在我的一个DAO类中的一种方法中调用此方法 但是,地图的大小始终为0,因此没有任何结果。我知道数据库中有符合我输入条件的行。我也有用于与oracle存储的proc