Para chamarmos uma stored procedure no servidor de banco normalmente utilizamos o objeto command e definimos o commandtype como storedproc.

Porém quando isso é feito com o Data Provider do OLEDB o que o OLEDB faz é transformar o nome da procedure que configuramos no CommandText na síntaxe do ODBC para chamada de procedures (Calma ! Ele não vai usar ODBC, só a síntaxe!).

 

O mal disso é que essa transformação do nome da procedure para a síntaxe ODBC gasta um tempinho (muito pouco, mas gasta), então se desejarmos uma otimização neste ponto podemos utilizar o commandtype.text e utilizarmos a síntaxe odbc diretamente no commandText. Usando a síntaxe ODBC diretamente, o provider do OLEDB não terá o trabalho de converter a síntaxe.

 

Exemplo:

Dim cmd As New OleDb.OleDbCommand("Call CustOrderHist(?)", CN)

Dim dr As OleDb.OleDbDataReader

cmd.CommandType = CommandType.Text

cmd.Parameters.Add("@CustomerID", OleDb.OleDbType.Char, 5)

cmd.Parameters("@CustomerID").Value = "ALFKI"

CN.Open()

 

dr = cmd.ExecuteReader

 

Já com o Data Provider do SQL Server ocorre justamente o contrário: Temos um overhead de performance se usarmos o commandtype.text, devemos estar usando o commandtype.storedproc.