Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

SQL "COMPLICADO" A PROC ALMACENADO

Estas en el tema de SQL "COMPLICADO" A PROC ALMACENADO en el foro de Bases de Datos General en Foros del Web. wenas... sé pasar sql's simples a proc almacenados, pero el que voy a colocar es (para mí) muy complicado... si alguien sabe como puedo crear ...
  #1 (permalink)  
Antiguo 14/01/2005, 16:27
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
SQL "COMPLICADO" A PROC ALMACENADO

wenas... sé pasar sql's simples a proc almacenados, pero el que voy a colocar es (para mí) muy complicado... si alguien sabe como puedo crear el proc. almacenado que me de alguna idea por favor...

el sql lo tengo en una página asp:
sqlintermedio = " and cliente.nombres like '%entrada&'"

SQL1 = "select cliente.rut as crut, cliente.nombres as cnombres, cliente.appat as cappat, cliente.apmat as capmat, count(precio.valor) as pvalor from cliente, precio where precio.rut = cliente.rut "

SQL2 = " group by cliente.rut, cliente.nombres, cliente.appat, cliente.apmat
order by cliente.appat asc"

despues concateno de esta forma
si no hay busqueda:
SQL = SQL1 & SQL2 (concateno el sql1 con el sql2)
si hay búsqueda de nombre:
SQL = SQL1 & sqlintermedio & SQL2

me entienden??
el asunto es que construyo el sql según si hay búsqueda o no...
y puse una sola busqueda... en realidad son 4...

mi pregunta... hay alguna forma de transformar esto en un proc. almacenado?? en asp existen los IF... en en lenguaje sql no existe parece...

si alguien no me entiende por favor que me lo diga...
gracias
  #2 (permalink)  
Antiguo 14/01/2005, 18:35
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
hola

bueno, si lo haces en .net
una de las propiedades de la conexion te permite llamar sp y sus respectivos parametros.
si no es así.
te recomiendo que envies en la sentencia el exec del sp y todos los parametros de manera que quede algo asi
exec sp_mi_store_procedure (@parametro1,@parametro2,@parametro3)
cada parametro, llenalo con el dato base de la consulta.
de manera que en el sp, puedes utilizar una macro para llenar una cadena dependiendo de lo que le llegue.
algo asi:
if not @parametro1 is null then
@variable1 = "los joins de tus tablas " o campo1 = @parametro 1
end if
y asi sucesivamente.
por ultimo retornas una matriz que o llenas otra tabla y esa la referencias en la aplicacion para que te tome los datos.

tambien puedes utilizar un tipo de mantenimiento,
en el cual puedas decir:
si es consulta 1 entonces mantenimiento =1
si es consulta 2 entonces mantenimiento =2
y este valor le envias como parametro al sp y en este programas la macro de acuerdo al tipo.
  #3 (permalink)  
Antiguo 14/01/2005, 19:25
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 6 meses
Puntos: 1
Coincido con Mildred. E incluso puedes pasar como parámetro cuál de las cuatro opciones es in en base a eso utilizar IFs. Así es como yo le hago cuando necesito algo parecido a lo que mencionas sabandija25...

Saludos
__________________
Ariel Avelar
  #4 (permalink)  
Antiguo 14/01/2005, 20:34
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
re

MUCHAS GRACIAS!!!

muy buenas sus respuestas, de hecho voy a comenzar a utilizar sus ideas y veré que pasa.

creo que de igual manera puedo aplicar los sql en consultas simples como:

sql = "select * from clientes" -> mala manera

a

sql = "select nombres, appat, apmat from clientes"
sql = "select rut, telefono from clientes"

estas 2 últimas consultas para transformarlas en proc. almacenado, no requiero de hacer 2 proc almacenados para ellas, sino que puedo enviar los atributos que necesito y los pongo en un parámetro del proc. y ahi construyo la consulta verdad?

muchas gracias por la ayuda!

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:16.