Ejecutar un procedimiento almacenado desde VB

29/04/2004 - 21:04 por Jhon Jairo Espitia | Informe spam
Me dicen que exite un forma de ejecutar un procedimiento
almacenado desde visual basic y pasar los parametros
para generar un reporte

Preguntas similare

Leer las respuestas

#1 Carlos Ch
29/04/2004 - 21:36 | Informe spam
Sería más o menos así (Ej. en .NET)
Dim myDataset As New DataSet
Dim myConn As New SqlConnection
(ConfigurationSettings.AppSettings("miconeccion"))
Dim mySQLAdapter As New SqlDataAdapter
("miStoredProcedure", myConn)
mySQLAdapter.SelectCommand.CommandType =
CommandType.StoredProcedure
mySQLAdapter.SelectCommand.Parameters.Add(New SqlParameter
("@miParametro", SqlDbType.VarChar, 10))
mySQLAdapter.SelectCommand.Parameters
("@miParametro").Value = Valor
... (si tengo más parametros los defino igual)
mySQLAdapter.Fill(myDataset, "miTabla")

Me dicen que exite un forma de ejecutar un procedimiento
almacenado desde visual basic y pasar los parametros
para generar un reporte
.

Respuesta Responder a este mensaje
#2 jboca
29/04/2004 - 21:43 | Informe spam
Hola, te cuento que desde VB.net si se puede, debes tener un SQLCommand y
dejarle el CommandType=StoreProcedure, luego en el CommandText debes
escribir el nombre del procedimiento almacenado que desees ejecutar, luego
usando la propiedad Parameters, debes adherir uno a uno los parametros que
sean requeridos por el StoreProcedure; debes saber exactamente que es lo
que te devolvera el StoreProcedure para poder tomar la decision de en
donde almacenar el retorno, he aqui un ejemplo con el StoreProc
CustOrderHist de la base de datos NorthWind.

Si lo ejecutas desde el Query Analizer
Exec custOrderHist 'ALFKI' --Cualquier ID de cliente


Desde VB.net

Me.SqlCommand1 = New System.Data.SqlClient.SqlCommand
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
'
'SqlCommand1
'
Me.SqlCommand1.CommandText = "[CustOrderHist]"
Me.SqlCommand1.CommandType System.Data.CommandType.StoredProcedure
Me.SqlCommand1.Connection = Me.SqlConnection1
Me.SqlCommand1.Parameters.Add(New
System.Data.SqlClient.SqlParameter("@RETURN_VALUE",
System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue,
False, CType(0, Byte), CType(0, Byte), "",
System.Data.DataRowVersion.Current, Nothing))
Me.SqlCommand1.Parameters.Add(New
System.Data.SqlClient.SqlParameter("@CustomerID",
System.Data.SqlDbType.NVarChar, 5))
'
'SqlConnection1
'
Me.SqlConnection1.ConnectionString = "workstation
id=CMSBANREP;packet ;integrated security=SSPI;data source=CM" & _
"SBANREP;persist security info=False;initial catalog=Northwind"


Y para adherirle el valor a los parametros

SqlCommand1.Parameters.Item(1).Value = "ALFKI"

El 1 es por que el segundo parametro que creamos era el de CustomerID y
por lo tanto tiene el Indice 1.

Espero te sea util

John Jairo Bocachica
Colombia

Jhon Jairo Espitia wrote:

Me dicen que exite un forma de ejecutar un procedimiento
almacenado desde visual basic y pasar los parametros
para generar un reporte
Respuesta Responder a este mensaje
#3 Lord Rogers
29/04/2004 - 21:43 | Informe spam
La forma que uso yo

Set rs=new ADOBC.Recordset
qry="exec sp_muestra_nombre "' & Text1.text & "'"
rs.open qry,cn

donde cn es la conexión creada a la BBDD (SQL SERVER)

Espero te sirva

Saludos,

Lord Rogers
Desde el último lugar del mundo...
"Jhon Jairo Espitia" escribió en el
mensaje news:635b01c42e1c$cbcf9f00$
Me dicen que exite un forma de ejecutar un procedimiento
almacenado desde visual basic y pasar los parametros
para generar un reporte
Respuesta Responder a este mensaje
#4 ulises
30/04/2004 - 16:41 | Informe spam
Prueba esto :

create table prueba ( valor char(1) )
go
create procedure obtieneprueba
@campo char(1)
as
select * from prueba where valor > @campo

luego desde VB :

Sub Main()

Dim cadena As String
Dim qry As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=sqloledb;Data Source(local);Initial Catalog=test;User Id=sa;Password=password;"
cn.Open
Set rs = New ADODB.Recordset
cadena = "1'; drop table prueba ; select '"
qry = "exec obtieneprueba '" & cadena & "'"
rs.Open qry, cn
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

verás que ese proceso elimina la tabla.

Saludos,
Ulises


Todo va a depender del código dentro del Stored


Procedure, ya que con lo que puse, estoy ejecutando un SP
con la variable que le paso. Si en el SP tengo un update,
no va a pasar nada, verdad?, si tengo un selec igual?.
O sea, el usuario jamás me va a poder ejecutar una


sentencia dañina en los SP que uno crea.

Saludos,

Lord Rogers
Respuesta Responder a este mensaje
#5 Lord Rogers
30/04/2004 - 17:01 | Informe spam
Toda la azón y súper interesante los artículos puestos más arriba

Saludos,

Lord Rogers
Desde el último lugar del mundo...
"ulises" escribió en el mensaje
news:688001c42ec1$47d0d250$
Prueba esto :

create table prueba ( valor char(1) )
go
create procedure obtieneprueba
@campo char(1)
as
select * from prueba where valor > @campo

luego desde VB :

Sub Main()

Dim cadena As String
Dim qry As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=sqloledb;Data Source(local);Initial Catalog=test;User Id=sa;Password=password;"
cn.Open
Set rs = New ADODB.Recordset
cadena = "1'; drop table prueba ; select '"
qry = "exec obtieneprueba '" & cadena & "'"
rs.Open qry, cn
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

verás que ese proceso elimina la tabla.

Saludos,
Ulises


Todo va a depender del código dentro del Stored


Procedure, ya que con lo que puse, estoy ejecutando un SP
con la variable que le paso. Si en el SP tengo un update,
no va a pasar nada, verdad?, si tengo un selec igual?.
O sea, el usuario jamás me va a poder ejecutar una


sentencia dañina en los SP que uno crea.

Saludos,

Lord Rogers
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida