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

必须使用dbcontext.Database.SqlQuery声明标量变量'@custid'?

傅志用
2023-03-14
问题内容

我正在尝试使用EF5从bcontext.Database.SqlQuery执行存储过程

它抛出一个错误 must declare the scalar variable '@custid'

  var results = _MiscContext.Database.SqlQuery<int>(
              "exec sp_GetStaff @custid",
              customerNumber).ToList<int>();

1如果customerNumber是staff,则SP返回,否则返回empty行。

ALTER PROCEDURE [dbo].[sp_GetStaff]
    @custid varchar(12)
AS
BEGIN

    SET NOCOUNT ON;
SELECT 
1 AS [C1]
FROM  [dbo].[Staff] with (nolock)
WHERE [CUSTOMER_ID] = @custid


END

如何处理?


问题答案:

由于使用的是命名参数,因此必须为要传递的参数指定匹配名称。

var results = _MiscContext.Database.SqlQuery<int>(
    "exec sp_GetStaff @custid",
    new SqlParameter("custid", customerNumber)).ToList<int>();


 类似资料:
  • 修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?

  • let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v

  • 问题内容: 我创建了一个SQL脚本以在另一个数据库中添加一个条目。但是,当我通过SQL Server Management Studio运行脚本时。 我收到以下错误: 必须声明标量变量“ @address” 在这一点上,我完全感到困惑,因为在执行语句之前已经声明了变量。是因为我正在遍历其他数据库吗? 到目前为止,我只是为了完成任务而将实际值放在语句中,尽管我想知道是什么引起了错误。 问题答案: 变

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • 局部变量使用关键字 def 来声明,其只在声明它的地方可见 . 局部变量是 Groovy 语言的一个基本特性. 例子 13.2 . 使用局部变量 def dest = "dest" task copy(type: Copy) { form "source" into dest }

  • 问题内容: 我有一个返回错误的过程: 必须声明表变量“ @PropIDs”。 但随后出现以下消息: (受影响的123行) 使用以下命令执行时出现错误 但是在以下情况下可以正常工作 有人可以帮我吗?步骤: 我在声明这样的表时找到了一种解决方案: 但是,当从C#(linq sql)执行过程时,它将返回错误 问题答案: 问题在于您正在将动态SQL与非动态SQL混淆在一起。 首先-将NULL放入@NotN