| |||
Ayuda con consulta Hola. quiero pedir ayuda ya que el problema que tengo es que quiero hacer una consulta o procedimiento almacenado por ejemplo: select * from productos order by precio. y quiero poner un parametro en precio para que asi pueda escojer la opcion por la cual quiero ordenar, por ejemplo por precio o nombre. Bueno espero haberme dado a entender gracias por la ayuda. |
| |||
Respuesta: Ayuda con consulta CREATE PROCEDURE [dbo].[OrdenaXCriterio] @filtro varchar(100) AS BEGIN declare @strSQL varchar(1000) SET @strSQL='SELECT * FROM nombre_TABLA ORDER BY ' + @filtro exec (@strSQL) END y para que lo llames seria OrdenaXCriterio 'campo_a_ordenar' |
| ||||
Respuesta: Ayuda con consulta Bueno, por lo que dices, el SGBD que estás usando es MySQL (aunque muchos duden, es por definición un DBMS). En segundo lugar, el problema, tal y como lo planteas, es mucho más simple de realizar desde una consulta construida en la aplicación y simplemente ejecutada en la base de datos. Esto es porque el proceso, si bien se puede hacer en un SP, es un poquito complejo y con algunos problemas... Partiendo de la base que un motor de base de datos no programa selecciones en pantalla, sino que responde a consultas, lo que te conviene hacer es simplemente preparar el formulario para realizar la selección del criterio de reordenamiento, y colocar el campo en cuestión en el final del string de la consulta.
Código sql:
Ver original Si aún así quieres hacerlo en un SP, hay dos formas básicas: 1. Construir un conjunto de selección por parámetros numéricos:
Código sql:
Donde en cada segmento ejecutarías un ordenamiento diferente. El parámetro opcion debería ser, entonces, el parámetro ingresado al SP.Ver original 2) Parametrizar la entrada permitiendo que ingrese en una variable VARCHAR un string conteniendo el/los campos de ordenamiento. Esto implica: - Crear el procedure parametrizado. - Cargar una variable de tipo user con una sentencia. - Crear una sentencia preparada sobre la base de la variable. - Ejecutar la sentencia preparada contra una tabla temporal. - Dropear la sentencia preparada. - Ejecutar un select contra la tabla temporal. El problema que yo me he encontrado es que pasar como parámetro un string conteniendo un conjunto de campos es bastante complicado de calibrar. No es un método que recomendaría para empezar a bucear en los SP.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Ayuda con consulta Cita: Sería exactamente como lo describo arriba. El modelo descrito es de MySQL.El problema central es que no es práctico (ni en MySQL ni en otro DBMS) manejar esa parametrización en un SP. Por caso, te posteo aquí un caso de SP con parámetros y resolución de valores según el caso:
Código sql:
Ver original Algo así sería en teoría generar un case par aun SP parametrizado.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |