繁体   English   中英

从ASP.Net/VB.Net中的存储过程返回日期

[英]Returning date from Stored procedure in ASP.Net/VB.Net

我想在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

我认为您的问题在这里:

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

您正在添加0,它们应为typeOf DateTime。

编辑

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

看起来您得到的错误是SQL错误而不是VB.Net错误。 您是否要在某处将日期时间转换为int? 您可以尝试运行ExecuteNonQuery()方法以查看是否遇到相同的错误。

您还可以运行SQLProfiler并确切查看正在运行的SQL。 然后,您可以尝试运行此SQL,即SQL Server Management Studio

您添加了两个参数-但您说应该返回下一个参数?

所以一定是

date DateTime = cmd.ExecuteScalar()
REM date = cmd.Parameters("@Date").Value
con.Close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM