如何从VB.net(或C#)调用sqlserver函数?是否有一些像存储过程的语法?

6 c# vb.net sql-server function

Public Sub cleanTables(ByVal prOKDel As Short)
     Dim sqlParams(1) As SqlParameter
     Dim sqlProcName As String
     sqlProcName = "db.dbo.sp_mySP"
     sqlParams(1) = New SqlParameter("@OKDel", prOKDel)
     Try
         dbConn.SetCommandTimeOut(0)
         dbConn.ExecuteNonQuery(CommandType.StoredProcedure, sqlProcName, sqlParams)
     Catch ex As Exception

     Finally

     End Try
End Sub
Run Code Online (Sandbox Code Playgroud)

在那儿

 CommandType.StoredProcedure...CommandType.Function
sqlParams(1) = New SqlParameter("@OKDel", prOKDel)...
Run Code Online (Sandbox Code Playgroud)

最后是datatable dt = dbConn.Execute(CommandType.StoredProcedure,sqlProcName,sqlParams)

谢谢

dig*_*uru 10

抱歉,没有办法直接运行功能.使用sql Text命令调用它

Public Sub RunFunction(ByVal input As Short)
            Using myConnection As New Data.SqlClient.SqlConnection
                Using myCommand As New Data.SqlClient.SqlCommand("Select dbo.MyFunction(@MyParam)", myConnection)
                    myCommand.CommandType = CommandType.Text
                    myCommand.Parameters.Add(New Data.SqlClient.SqlParameter("@MyParam", input))
                    myCommand.CommandTimeout = 0
                    Try
                        myCommand.ExecuteNonQuery()
                    Catch ex As Exception

                    End Try
                End Using

            End Using
        End Sub
Run Code Online (Sandbox Code Playgroud)

或绕过它的程序......

Create Procedure RunMyFunction(@MyParam as int)
Select * FROM dbo.MyFunction(@MyParam)
Go
Run Code Online (Sandbox Code Playgroud)

  • 对此有两点评论:1 - 它假定一个表值函数和2 - sqlParams(1)的目的是什么?它似乎没有在任何地方使用.否则非常有帮助,谢谢 (2认同)

小智 6

是的,您可以直接调用函数,如下所示.

Dim dtaName As New SqlClient.SqlDataAdapter

dtaName.SelectCommand = New SqlClient.SqlCommand
With dtaName.SelectCommand
    .CommandTimeout = 60
    .Connection = prvcmpINC.cntINC
    .CommandType = CommandType.StoredProcedure
    .CommandText = "dbo.app_GetName"
    .Parameters.AddWithValue("@ParamToPassIn", parstrParamToPassIn)
    .Parameters.Add("@intResult", SqlDbType.Int)
    .Parameters("@intResult").Direction = ParameterDirection.ReturnValue
End With

dtaName.SelectCommand.ExecuteScalar()
intRuleNo = dtaName.SelectCommand.Parameters("@intResult").Value
Run Code Online (Sandbox Code Playgroud)

  • 为什么这回答CW? (3认同)