У меня есть хранимая процедура, подобная этой, и когда я запускаю эту хранимую процедуру в 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 для получения строк. – GSerg
Я не получаю строку при запуске магазина в студии управления. и они попросили меня поставить оператор if, чтобы проверить, является ли onum null или 0 делать что-то, как я получаю onum, когда store proc ничего не возвращает? – Alma
Он возвращает 'isnull (@ onum, 0)' как [его возвращаемое значение] (http://stackoverflow.com/a/8619015/11683). – GSerg