Procedimientos Almacenados - Parametros

30/12/2004 - 23:55 por Romero Diego | Informe spam
Hola
Todos

Tengo un problema :
La tabla que describo a continuación tiene muchos campos y tengo que hacer
un reporte donde en una lista esten los nombres de los campos y el usuario
seleccione los que desee filtrar, esto se hace desde VB

El problema es como hago un procedimiento almacenado para paserle los
parametros segun los campos que seleccione o necesariamente debo crear
parametro por campo ?

SELECT IdVehiculo, Numero, IdClase, IdMarca, IdLinea, IdColor, IdTipoVeh,
IdTipoMot, AnnoModelo, FecRepotencia, Ejes, NumLlantas, PesoVeh, Pasajeros,
PasajPie, CapTanque, NumeroMotor, SerieChasis,
Cilindrada, IdTipoCom, IdTipoLla, IdTipoLub, IdMarLla, IdMarLub, IdEmpresa,
IdPropietario,
IdConductor, IdTipoPro, Adquisicion,IdGrupo,VehPropio,
IdProveedor, FecCompra, TarjetaProp, CostoCompra, ValorAvaludo,
ValorAsegurado,ValorCupo, IdAdmon,
NumContrato,ContratoActivo,FecIngreso,
FecRetiro,FecVigencia,FecSalida, VidaUtil, FecImpuestos, DocCompleta,
Accidentes,ObligaTProd, PolizaSoat,FecSoat,VigSoat,EmpresaSoat
,GarantiaAcc,PolizaResCivil,FecResCivil,VigResCivil,
CertMovilizacion, FecCertMovil, VigCertMovil, TarjetaOperacion, FecTarjOper,
VigTarjOper, CertGases, FecCertGases, VigCertGases,
Kilometraje, KmsCompra,
Observacion,CentInicial,CentFinal,CupoCredito,SaldoActual, ArchivoFoto,
IdEstado, FechaAdd, FechaUpdate, IdUsuario
FROM Vehiculos
WHERE ' aqui la condición que depende de los campos que seleccione el
usuario

gracias



Diego

Preguntas similare

Leer las respuestas

#21 MAXI
03/01/2005 - 03:04 | Informe spam
Hola Luis, te paso algunos enlaces

http://www.microsoft.com/spanish/ms...etdev2.asp

http://msdn.microsoft.com/library/s...rmance.asp

http://msdn.microsoft.com/library/s...tegies.asp

Ahh y si queres mas aun, te recomiendo que hagas el curso de Universidad.NET
y veras si usan o no Sp's ;)


O quizas en quienes trabajan para una sola empresa o corporacion y quienes
no.



Yo nunca trabaje para la misma empresa, y mucho de mis productos se usan en
varias empresas que exigen cierto nivel de calidad.

Un abrazo





Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Luis Nivar" escribió en el mensaje
news:
>
Creo que la diferencia es esta, quienes trabajan en ambientes
corporativos


y
quienes no.




O quizas en quienes trabajan para una sola empresa o corporacion y quienes
no.


Pero dejemos el tema aca, primero lean las recomendaciones de MS en su
pagina de arquitectura y luego la seguimos, pero no tiene sentido
discutir
algo que aun no entienden




Pienso que si. Tienes algun enlace donde ver esas recomendaciones ?


Respuesta Responder a este mensaje
#22 Carlos Rodriguez
03/01/2005 - 04:48 | Informe spam
Todos aprendemos de estas discusiones aunque fuera bueno leer mas opiniones
al respecto.

Por lo pronto me gustaria saber lo siguiente:

Se puede deducir que usted recomienda entonces que absolutamente todas las
acciones hacia el servidor se hagan a traves de un store procedure ?

Ademas cuando uno usa transacciones manuales que deben actualizar varias
tablas, debe hacerse tambien hacerse en un solo SP incluyendo el begin
transaction, las actualizaciones y el commit (o el rollback) dentro del
mismo SP ?



"MAXI" wrote in message
news:%
Hola Luis, te paso algunos enlaces




http://www.microsoft.com/spanish/ms...etdev2.asp




http://msdn.microsoft.com/library/s...rmance.asp




http://msdn.microsoft.com/library/s...tegies.asp

Ahh y si queres mas aun, te recomiendo que hagas el curso de


Universidad.NET
y veras si usan o no Sp's ;)


O quizas en quienes trabajan para una sola empresa o corporacion y


quienes
> no.

Yo nunca trabaje para la misma empresa, y mucho de mis productos se usan


en
varias empresas que exigen cierto nivel de calidad.

Un abrazo





Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Luis Nivar" escribió en el mensaje
news:
> >
>> Creo que la diferencia es esta, quienes trabajan en ambientes
>> corporativos
> y
>> quienes no.
>>
>
> O quizas en quienes trabajan para una sola empresa o corporacion y


quienes
> no.
>
>>
>> Pero dejemos el tema aca, primero lean las recomendaciones de MS en su
>> pagina de arquitectura y luego la seguimos, pero no tiene sentido
>> discutir
>> algo que aun no entienden
>>
>
> Pienso que si. Tienes algun enlace donde ver esas recomendaciones ?
>
>


Respuesta Responder a este mensaje
#23 Maxi
03/01/2005 - 13:14 | Informe spam
Hola Carlos, yo recomiendo que el nexo entyre la bdd y el modelo de
aplicacion sean los sp's, esto te asegura lo siguiente.

1) No dar permisos a las tablas de forma directa, este tipo de acciones pone
en riesgo la aplicacion
2) Aumentar el rendimiento (al ser un sp's los procesos quedan cacheados y
ademas baja considerablemente el consumo de red)
3) Mantenimiento: Si usas sp's cuando cambies algo en la BDD podras de forma
muy simple saber donde impacta y hacer las modificaciones necesarias, muchas
veces sin que el cliente que consume el sp's se diera cuenta.

Las transacciones: esto no es necesario armar un solo Sp's, yo lo que hago
es llamar la transaccion desde la aplicacion y luego llamar a todos los sp's
que sean necesario.

Un abrazo


Salu2
Maxi


"Carlos Rodriguez" escribió en el mensaje
news:%

Todos aprendemos de estas discusiones aunque fuera bueno leer mas
opiniones
al respecto.

Por lo pronto me gustaria saber lo siguiente:

Se puede deducir que usted recomienda entonces que absolutamente todas las
acciones hacia el servidor se hagan a traves de un store procedure ?

Ademas cuando uno usa transacciones manuales que deben actualizar varias
tablas, debe hacerse tambien hacerse en un solo SP incluyendo el begin
transaction, las actualizaciones y el commit (o el rollback) dentro del
mismo SP ?



"MAXI" wrote in message
news:%
Hola Luis, te paso algunos enlaces




http://www.microsoft.com/spanish/ms...etdev2.asp




http://msdn.microsoft.com/library/s...rmance.asp




http://msdn.microsoft.com/library/s...tegies.asp

Ahh y si queres mas aun, te recomiendo que hagas el curso de


Universidad.NET
y veras si usan o no Sp's ;)


O quizas en quienes trabajan para una sola empresa o corporacion y


quienes
> no.

Yo nunca trabaje para la misma empresa, y mucho de mis productos se usan


en
varias empresas que exigen cierto nivel de calidad.

Un abrazo





Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Luis Nivar" escribió en el mensaje
news:
> >
>> Creo que la diferencia es esta, quienes trabajan en ambientes
>> corporativos
> y
>> quienes no.
>>
>
> O quizas en quienes trabajan para una sola empresa o corporacion y


quienes
> no.
>
>>
>> Pero dejemos el tema aca, primero lean las recomendaciones de MS en su
>> pagina de arquitectura y luego la seguimos, pero no tiene sentido
>> discutir
>> algo que aun no entienden
>>
>
> Pienso que si. Tienes algun enlace donde ver esas recomendaciones ?
>
>






Respuesta Responder a este mensaje
#24 Romero Diego
03/01/2005 - 17:36 | Informe spam
Despues de leer todos los comentarios y sugerencias al respecto;
creo que para el caso donde las condiciones WHERE del SELECT son dinamicas,
es decir el usuario
es quien sabe cuantos condiciones va a pasar para obtener los resultados, es
muy dificil crear un SP.Sería posible
si se pudiera pasar como parametro la String con la condición WHERE completa
y agregarla al SP algo como:

CREATE PROCEDURE pa_Ejemplo @sCondicion VARCHAR(8000)
SELECT campo1,campo2,campo3,campoN,,,, FROM tabla
WHERE @sCondicion

Creo que esto no se puede.

Diego


"Ricardo Passians" escribió en el mensaje
news:
Y porque en vez de un procedimiento, mejor armas el select desde tu
aplicación ?
Hay casos (pocos si) donde no es practico tenerlo en un sp. Ahora bien,


si
insistes en ponerlo en un SP deberas manejar en el todas las combinaciones
posibles y te convendrias hacer un script tambien desde tu sistema que te
genere el codigo del SP a un archivo, lo cortas y lo pegas en un create


proc
en el query analizer o enterprise manager.

"Romero Diego" wrote in message
news:%
> Hola
> Todos
>
> Tengo un problema :
> La tabla que describo a continuación tiene muchos campos y tengo que


hacer
> un reporte donde en una lista esten los nombres de los campos y el


usuario
> seleccione los que desee filtrar, esto se hace desde VB
>
> El problema es como hago un procedimiento almacenado para paserle los
> parametros segun los campos que seleccione o necesariamente debo crear
> parametro por campo ?
>
> SELECT IdVehiculo, Numero, IdClase, IdMarca, IdLinea, IdColor,
IdTipoVeh,
> IdTipoMot, AnnoModelo, FecRepotencia, Ejes, NumLlantas, PesoVeh,
Pasajeros,
> PasajPie, CapTanque, NumeroMotor, SerieChasis,
> Cilindrada, IdTipoCom, IdTipoLla, IdTipoLub, IdMarLla, IdMarLub,
IdEmpresa,
> IdPropietario,
> IdConductor, IdTipoPro,
Adquisicion,IdGrupo,VehPropio,
> IdProveedor, FecCompra, TarjetaProp, CostoCompra, ValorAvaludo,
> ValorAsegurado,ValorCupo, IdAdmon,
> NumContrato,ContratoActivo,FecIngreso,
> FecRetiro,FecVigencia,FecSalida, VidaUtil, FecImpuestos, DocCompleta,
> Accidentes,ObligaTProd, PolizaSoat,FecSoat,VigSoat,EmpresaSoat
>


,GarantiaAcc,PolizaResCivil,FecResCivil,VigResCivil,
> CertMovilizacion, FecCertMovil, VigCertMovil, TarjetaOperacion,
FecTarjOper,
> VigTarjOper, CertGases, FecCertGases, VigCertGases,
> Kilometraje, KmsCompra,
> Observacion,CentInicial,CentFinal,CupoCredito,SaldoActual, ArchivoFoto,
> IdEstado, FechaAdd, FechaUpdate, IdUsuario
> FROM Vehiculos
> WHERE ' aqui la condición que depende de los campos que seleccione el
> usuario
>
> gracias
>
>
>
> Diego
>
>
>
>
>


Respuesta Responder a este mensaje
#25 Maxi
03/01/2005 - 18:25 | Informe spam
Diego, te comento:

Yo en mis sistemas uso consultas dinamicas mucho, ya que le doy la
posibilidad al usuario de elegir que datos quiere buscar, y esto lo tengo
implementado con Sp's sin ningun problema.

Si usas Isnull() o algun otro truco como el like con el CASE, podrias
emular esto sin problemas.

Ahora si lo que buscas es que el usuario pueda armar una query el tema ya
cambia considerablemente.

Si es este el punto no tendras que darle acceso directo a las tablas, pero
por logica en un sistema de este tipo, no todos pueden hacer querys, sino un
grupo reducido de personas. Otras cosas que he visto por ahi y que me han
parecido muy piolas es lo siguiente:

En estos casos el usuario arma todo el query, pero realmente a la BDD se
transforma en un Sp's y luego es llamado ya que queda guardado el query
digamos. Esto lo he visto en varios sistemas y no me parecio una idea loca,
al consultar a los ingenieros de desarrollo me dieron la explicacion que me
temia:

Si una persona arma querys y la guarda, la mejor forma es que quede en un
Sp's que hasta lo podrian reutilizar otros, de esta forma usamos el patron
de aislamiento, mejoramos la performance y la seguridad no se pone en
riesgo.

Es solo cuestion de pensarlo, pero es cierto que si buscas armar Querys
dinamicos (y no me refiero a que se pueda consultar por cualquier campo de
la tabla, sino que hasta pueda unir tablas y otro tipo de cosas)

Un abrazo


Salu2
Maxi


"Romero Diego" escribió en el mensaje
news:
Despues de leer todos los comentarios y sugerencias al respecto;
creo que para el caso donde las condiciones WHERE del SELECT son
dinamicas,
es decir el usuario
es quien sabe cuantos condiciones va a pasar para obtener los resultados,
es
muy dificil crear un SP.Sería posible
si se pudiera pasar como parametro la String con la condición WHERE
completa
y agregarla al SP algo como:

CREATE PROCEDURE pa_Ejemplo @sCondicion VARCHAR(8000)
SELECT campo1,campo2,campo3,campoN,,,, FROM tabla
WHERE @sCondicion

Creo que esto no se puede.

Diego


"Ricardo Passians" escribió en el mensaje
news:
Y porque en vez de un procedimiento, mejor armas el select desde tu
aplicación ?
Hay casos (pocos si) donde no es practico tenerlo en un sp. Ahora bien,


si
insistes en ponerlo en un SP deberas manejar en el todas las
combinaciones
posibles y te convendrias hacer un script tambien desde tu sistema que te
genere el codigo del SP a un archivo, lo cortas y lo pegas en un create


proc
en el query analizer o enterprise manager.

"Romero Diego" wrote in message
news:%
> Hola
> Todos
>
> Tengo un problema :
> La tabla que describo a continuación tiene muchos campos y tengo que


hacer
> un reporte donde en una lista esten los nombres de los campos y el


usuario
> seleccione los que desee filtrar, esto se hace desde VB
>
> El problema es como hago un procedimiento almacenado para paserle los
> parametros segun los campos que seleccione o necesariamente debo crear
> parametro por campo ?
>
> SELECT IdVehiculo, Numero, IdClase, IdMarca, IdLinea, IdColor,
IdTipoVeh,
> IdTipoMot, AnnoModelo, FecRepotencia, Ejes, NumLlantas, PesoVeh,
Pasajeros,
> PasajPie, CapTanque, NumeroMotor, SerieChasis,
> Cilindrada, IdTipoCom, IdTipoLla, IdTipoLub, IdMarLla, IdMarLub,
IdEmpresa,
> IdPropietario,
> IdConductor, IdTipoPro,
Adquisicion,IdGrupo,VehPropio,
> IdProveedor, FecCompra, TarjetaProp, CostoCompra, ValorAvaludo,
> ValorAsegurado,ValorCupo, IdAdmon,
> NumContrato,ContratoActivo,FecIngreso,
> FecRetiro,FecVigencia,FecSalida, VidaUtil, FecImpuestos, DocCompleta,
> Accidentes,ObligaTProd, PolizaSoat,FecSoat,VigSoat,EmpresaSoat
>


,GarantiaAcc,PolizaResCivil,FecResCivil,VigResCivil,
> CertMovilizacion, FecCertMovil, VigCertMovil, TarjetaOperacion,
FecTarjOper,
> VigTarjOper, CertGases, FecCertGases, VigCertGases,
> Kilometraje, KmsCompra,
> Observacion,CentInicial,CentFinal,CupoCredito,SaldoActual, ArchivoFoto,
> IdEstado, FechaAdd, FechaUpdate, IdUsuario
> FROM Vehiculos
> WHERE ' aqui la condición que depende de los campos que seleccione el
> usuario
>
> gracias
>
>
>
> Diego
>
>
>
>
>






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