【问题标题】:When executing stored procedures in VB.NET/SQL, are we supposed to add "EXEC" or not?在 VB.NET/SQL 中执行存储过程时,是否应该添加“EXEC”?
【发布时间】:2015-06-17 19:20:28
【问题描述】:

我不知道该相信什么了。当我们在存储过程之外运行我们的 VB.NET SqlCommand 时,我们是否在命令中添加 EXEC?!

我得到一个错误:

找不到存储过程“EXEC uspGrabAutoByYMM”。

但是其他人告诉我你必须把 EXEC 放在那里才能运行。

这是我的示例代码:

Public Sub BindGridAutosYMM()
    Dim constring As String = "server=classified;database=classified"
    Using con As New SqlConnection(constring)
        Using cmd As New SqlCommand("EXEC uspGrabAutoByYMM", con)
            cmd.Parameters.Add("@Year", SqlDbType.VarChar).Value = TextBox1.Text
            cmd.Parameters.Add("@Make", SqlDbType.VarChar).Value = TextBox2.Text
            cmd.Parameters.Add("@Model", SqlDbType.VarChar).Value = TextBox3.Text
            cmd.CommandType = CommandType.StoredProcedure
            Using sda As New SqlDataAdapter(cmd)
                Using dt As New DataTable()
                    sda.Fill(dt)
                    DataGridView1.DataSource = dt
                End Using
            End Using
        End Using
    End Using
End Sub

【问题讨论】:

  • 不,在这种情况下不需要添加EXEC
  • 如果添加的时候报错,而省略的时候没有报错,那么听起来你就有答案了。当您可以演示代码时,“其他人”告诉您的内容并没有多大区别。
  • 大卫。我绝对明白你的意思。我绝对明白你的意思。哈哈。当我告诉人们我用 @ 符号在 VB 中编写我的 SQL 代码并且人们告诉我将它存储在 SQL SSMS 中时,我的理念是一样的吗?就像它没有区别! :D
  • 也许这些人不了解您尝试执行程序的上下文。在这种情况下,您已经向 SqlCommand 提示它是一个存储过程,因此它可以自己处理 EXEC 部分。
  • @Cᴏʀʏ,在这种情况下,我必须添加它。事先,我会运行程序,它会说“我们找不到参数@Year,所以程序已经中止”,......,那条线的缺失会是原因吗?跨度>

标签: sql-server vb.net stored-procedures


【解决方案1】:

没有。

System.Data.CommandType.StoredProcedure 为您完成。

会有帮助的:How to: Execute a Stored Procedure that Returns Rows

也见:

将 EXECUTE 与存储过程一起使用 当语句是批处理中的第一个语句时,执行存储过程时不必指定 EXECUTE 关键字。

EXECUTE (Transact-SQL)

如果您删除“exec”并且问题仍然存在,请确认您的数据库中存在此过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多