Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/02/2005, 11:39
Avatar de Jorge_Mota
Jorge_Mota
 
Fecha de Ingreso: diciembre-2002
Ubicación: Chapinlandia :-D
Mensajes: 725
Antigüedad: 21 años, 5 meses
Puntos: 11
te paso un proc que tengo yo para hacer select dinamicos (no dejo que el usuario los escriba, mas bien yo los construyo en base a unas reglas ya establecidas)
Código:
Create procedure SQLDinamico @cTabla as char(25), @cFini as char(25), @cFiltro as char(300), @cCampos as char(150) as
begin
	declare @cSql as varchar(2500)
	set @cSql = 'Select '+ltrim(Rtrim(@cFini)) 
	if len(ltrim(rtrim(@cCampos)))=0 
		set @cCampos = ' * '
	
	set @cSql = @cSql +' '+ltrim(rtrim(@cCampos)) + ' From '+ ltrim(rtrim(@cTabla)) + ' '+ltrim(rtrim(cast(@cFiltro as char(300))))
	--Para debugear puedes descomentar esto:
	/*
		Print @cSql
	--	que dara como resultado como esta formando la instruccion
	*/
	exec sp_sqlexec @cSql
end
uso:

Primer parametro: Tabla en la que se realiza el select
segundo: funcion a utilizar (distinct, top, etc)
tercero: Filtro a usar (where, order by, group, etc, van aca)
Cuarto: campos a

te pongo un par de ejemplos

exec SQLDinamico 'tbl_asegs_humano','distinct ',' order by id_linea','id_linea'

exec SQLDinamico 'tbl_asegs_humano','Top 100 ',' where vigor =0 order by id_linea','*'


Saludos
__________________
Jorge Mota
Blog
Gubiz estafa

Última edición por Jorge_Mota; 08/02/2005 a las 12:04