【发布时间】:2013-08-16 23:14:27
【问题描述】:
我有一个这样的存储过程,当我在 SQL Server Management Studio 中运行这个存储过程时,我只得到“命令已成功完成”。
如何在我的 vb.net 代码中使用简单的 if 语句检查 @onum 是否为 0 做某事。
我从不使用这种类型,通常存储过程在没有值时返回一个空行。
ALTER PROCEDURE [dbo].[o_By_RNum]
@rNum varchar(50)
,@ServiceType varchar(50)
,@Direction varchar(1) = NULL
,@VendorID int
AS
Declare @onum int
If @Direction is Null
Begin
SELECT @onum = o_num
FROM RemoteOrder
WHERE r_num LIKE @rNum
AND r_ServiceType = @ServiceType
AND VendorID = @VendorID
End
Else
Begin
SELECT @onum = o_num
FROM RemoteOrder
WHERE r_num LIKE @rNum
AND r_ServiceType = @ServiceType
AND Direction = @Direction
AND VendorID = @VendorID
End
RETURN ISNULL(@onum,0)
我在我的 vb.net 代码中调用这个存储过程,如下所示:
Private Sub DLL_GetOnumFromRemoteOrder_By_RNum(ByRef SqlConn As SqlConnection, ByRef R_NUM As String, ByRef R_SERVICETYPE As String, ByRef DIRECTION As String, ByRef VENDORID As Integer, ByRef RetVal As Integer)
'Open the SQL Connection
If SqlConn.State <> ConnectionState.Open Then SqlConn.Open()
'Add Parameters
Dim command As New SqlCommand("DLL_GetOnumFromRemoteOrder_By_RNum", SqlConn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add("@rNum", SqlDbType.VarChar).Value = IIf(IsNothing(R_NUM), DBNull.Value, R_NUM)
command.Parameters.Add("@ServiceType", SqlDbType.VarChar).Value = IIf(IsNothing(R_SERVICETYPE), DBNull.Value, R_SERVICETYPE)
command.Parameters.Add("@Direction", SqlDbType.Char).Value = IIf(IsNothing(DIRECTION), DBNull.Value, DIRECTION)
command.Parameters.Add("@VendorID", SqlDbType.Int).Value = IIf(IsNothing(VENDORID), DBNull.Value, VENDORID)
command.Parameters.Add("@RETURN_VALUE", SqlDbType.Int)
command.Parameters("@RETURN_VALUE").Direction = ParameterDirection.ReturnValue
'Dim dr As SqlDataReader
'dr = command.ExecuteReader()
'dr.Read()
'Return dr
'Execute the command
RetVal = command.ExecuteNonQuery()
RetVal = CInt(command.Parameters.Item("@RETURN_VALUE").Value)
End Sub
【问题讨论】:
-
您使用
ExecuteNonQuery执行,因此您不会得到任何行。使用ExecuteReader执行以获取行。 -
当我在管理工作室中运行 store proc 时,我没有得到该行。他们让我放一个 if 语句来检查 onum 是 null 还是 0 当 store proc 没有返回任何东西时我如何得到 onum?
-
它以its return value 的形式返回
isnull(@onum,0)。
标签: sql sql-server vb.net stored-procedures