Дата возврата из хранимой процедуры в ASP.Net/VB.Net - PullRequest
1 голос
/ 04 июня 2010

Я хочу выполнить метод на VB.Net, чтобы вернуть дату, которая находится в хранимой процедуре. Я пытался использовать ExecuteScalar, но он не работает, он повторяет ошибку

'Неявное преобразование из типа данных datetime в int недопустимо. Используйте функцию CONVERT для выполнения этого запроса '

Любая помощь будет высоко ценится, пожалуйста?

спасибо

ниже код

  Public Function GetHolidaydate(ByVal struserID as String) As DateTime

        Dim objArgs1 As New clsSQLStoredProcedureParams

        objArgs1.Add("@userID", Me.Tag)
        objArgs1.Add("@Date", 0, 0, ParameterDirection.Output)

        Return (CDate(ExecuteScalar(clsLibrary.MyStoredProcedure.GetHolidayDate, objArgs1)))

End Function

Ответы [ 3 ]

0 голосов
/ 04 июня 2010

Похоже, ошибка, которую вы получаете, является ошибкой SQL, а не ошибкой VB.Net. Вы пытаетесь конвертировать datetime в int где-нибудь? Вы можете попробовать запустить метод ExecuteNonQuery(), чтобы увидеть, если вы получите ту же ошибку.

Вы также можете запустить SQLProfiler и точно узнать, какой SQL запускается. Затем вы можете попробовать запустить этот SQL в SQL Server Management Studio

0 голосов
/ 05 июня 2010

Вы добавили два параметра - но вы сказали, что он должен вернуть более поздний?

Так должно быть

date DateTime = cmd.ExecuteScalar()
REM date = cmd.Parameters("@Date").Value
con.Close()
0 голосов
/ 04 июня 2010

Я думаю, что ваша проблема здесь:

objArgs1.Add("@Date", 0, 0, ParameterDirection.Output)

Вы добавляете 0, где они должны иметь тип DateTime.

EDIT

Public Function GetHolidayDate(ByVal struserID as String) AS DateTime
    Dim con As New SqlConnection(yourSQLConnectionString)
    Dim cmd As New SqlCommand
    Dim date As DateTime    

    con.Open()
    cmd.Connection = con
    cmd.CommandType = CommandType.StoredProcedure
    cmd.CommandText = "yourStoredProcedureName"
    cmd.Parameters.Add("@userID", Me.Tag)
    cmd.Parameters("@Date").Direction = ParameterDirection.Output
    cmd.ExecuteScalar()
    date = cmd.Parameters("@Date").Value
    con.Close()

    Return date
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...