在VisualStudio2008中显示sql过程error_id输出

时间:2016-02-08 12:19:00

标签: sql-server visual-studio stored-procedures visual-studio-2008

我正在遇到一个问题,因为我的VS2008无效,因此想要获取error_id。 我有一个返回一些输出的过程,当给定数据中有错误时,它会在第二个sql语句中返回error_id(或者null就是一切正常):

declare @p6 int 
set @p6=NULL 
exec Rec_EdStk_EdZB_Sub1_Sp N'2',N'1207',1,5,5,@p6 output 
select @p6 

在推出该代码后,我得到了这两个窗口: enter image description here

所以我需要的是在我的VS2008项目中获得第二个sql结果。 我写了一些代码:

        Dim dta As New DataTable
        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
        Dim reader As SqlDataReader
        Dim quer As String = "declare @p6 int "
        quer += " set @p6=NULL "
        quer += " exec Rec_EdStk_EdZB_Sub1_Sp N'2',N'1207',1,5,5,@p6 output "
        quer += " select @p6 "

        Try
            con.ConnectionString = "server=TRAIN;database=DB;uid=test;pwd=test"
            con.Open()
            cmd.Connection = con
            cmd.CommandText = quer
            reader = cmd.ExecuteReader()
            con.Close()
        Catch
            MsgBox("Connection error")
        End Try

当我尝试从数据中提取数据时,我从第一个结果输出中得到了我想要的任何东西 例如,如果我写MsgBox(dta.Rows(0)(1)),我从第二列第一行得到值1 但是如何从声明的参数@p6(在这种情况下为空)中获取值,在另一个sql结果表中给出哪个输出? ********* **********编辑
如果有人建议使用数据集,请提供一个示例,因为我无法使用数据集获取error_id值:
enter image description here

1 个答案:

答案 0 :(得分:0)

这是因为您使用的是DataReader。 输出参数仅在DataReader关闭后可用 来自Microsoft support:

  

<强>原因
  使用DataReader对象时,在数据流的末尾返回输出参数。

     

解决
  使用DataReader时,必须先关闭它或读取数据的末尾,然后才能看到输出参数。

这就是我在需要输出参数时更喜欢使用数据集的原因。