에서 아무것도 반환하지 않는다. SqlServer에서 저장 프로 시저를 실행하면 올바르게 작동하고 type_id을 반환합니다. 내가으로 VisualStudio에서 함수에서 저장 프로 시저를 호출 할 때ExecuteScalar는이 I는 입력 파라미터로서 <em>TYPE_NAME</em> (VARCHAR (100))를 사용하여 출력 파라미터로서 <em>TYPE_ID</em> (INT)을 리턴하는 단순한 프로 시저를 저장 프로 시저
CREATE PROCEDURE [dbo].[intake_types_select_by_type_name]
@type_name varchar(100),
@type_id integer OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON
SELECT @type_id = type_id
FROM intake_types
WHERE type_name = @type_name
END
그러나, 매개 변수 는 반환 아무것도을 @type_id.
Public Shared Function sp_intake_types_select_by_type_name(ByVal conn As DBConnection, ByVal caseName As String) As Integer
Dim sp As SqlCommand = conn.GetStoredProcedure("intake_types_select_by_type_name")
With sp.Parameters
.Add("@type_name", SqlDbType.VarChar, ParameterDirection.Input).Value = caseName
.Add("@type_id", SqlDbType.Int)
.Item("@type_id").Direction = ParameterDirection.Output
End With
sp.ExecuteScalar()
If Not IsDBNull(sp.Parameters("@type_id").Value) Then
Return sp.Parameters("@type_id").Value
Else
Return Nothing
End If
End Function
나는 웹 검색에 많은 시간을 할애하여 도움이되지 않는다. 비슷한 저장 프로 시저 및 동일한 코딩 및 논리를 사용하는 다른 프로젝트 함수 및 작동합니다 (그러나 그것은 varchar OUTPUT 매개 변수로 반환합니다). 나는이 두 프로젝트를 비교하여 내가 단순하지만 기쁨이없는 것을보고 있는지 알아 본다.
'Dim result = sp.ExecuteScalar()'를 시도 했습니까? – Fabio
필자가 본 모든 예는'TypeID = (Int32) sp.ExecuteScalar()'와 같은 기능을합니다. 다른 프로젝트에서'sp.ExecuteScalar()'에 대한 호출을 간단하게하고 있습니까? –
'.Item ("@ type_id"). Direction = ParameterDirection.Output'을 제거하고 .Add ("@ type_id", SqlDbType.Int)를 .Add ("@ type_id", SqlDbType.Int, ParameterDirection)로 변경하십시오. Output)'을 선택하고 ExecuteScalar를 ExecuteNonQuery()로 변경하십시오. 나는 그것이 당신의 문제를 해결할지는 모르지만 그것은 시험할만한 가치가있다. –