Ver Mensaje Individual
  #15 (permalink)  
Antiguo 22/08/2011, 09:56
Avatar de mdavila
mdavila
 
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: transact STORE PROCEDURE

Al final lo logre así ya que la ultima parte era la que me complico mas.
Gracias a todos.
Saludos.

GO
-- =============================================
ALTER PROCEDURE [dbo].[GetAutoss]
@PageIndex int
,@PageSize int
,@Tipo int
,@FchPub datetime
,@RecordCount int out
AS
BEGIN

declare @ColumnasSalida varchar(2055)
declare @Order varchar(2055)
declare @ClausulaFrom varchar(2055)
declare @ClausulaWhere varchar(2055)
declare @SentenciaSELECT varchar(2055)


set @ColumnasSalida = 'Avisos.AviProCod, Avisos.AviSolWeb, Textos.AviTxt, Avisos.AviCantFot,
Avisos.AviCantVis, Avisos.AviVtaCod, Avisos.AviSbpCod, Avisos.AviRec,
Avisos.AviDisSup, Avisos.AviDisInf, Avisos.AviOpeNro, Avisos.AviWebFot,
Avisos.AviUbiInt4, Avisos.AviUbiInt2, Avisos.AviRecCol, Avisos.AviCabCol,
Avisos.AviFonCol, AutMod.AutModDsc, DetAutCero, DetAutMon, DetAutAlar,
DetAutBlq, DetAutAirb, DetAutABS, DetAutAire, DetAutAlza, DetAutCil,
DetAutColo, DetAutDire, DetAutEstV, DetAutKmt, DetAutAnio, DetAutTran,
DetAutTpoA, DetAutImp, '
set @Order = 'ROW_NUMBER() OVER (ORDER BY Avisos.AviUbiInt4 desc, Avisos.AviWebFot desc, Textos.AviTxtOrd) AS RowNumber'
set @ClausulaFrom = 'Avisos INNER JOIN Textos ON Avisos.AviVtaCod = Textos.AviVtaCod
INNER JOIN DetAuto ON Avisos.AviVtaCod = DetAuto.DetAutCod
INNER JOIN AUTMAR ON DetAuto.DetAutMarC = AUTMAR.AutMarCod
AND DetAuto.DetAutTpoC = AUTMAR.AutTpoCod
INNER JOIN AUTMOD ON DetAuto.DetAutMarC = AUTMOD.AutMarCod
AND DetAuto.DetAutTpoC = AUTMOD.AutTpoCod
AND DetAuto.DetAutModC = AUTMOD.AutModCod
INNER JOIN AUTTPO ON AUTMOD.AutTpoCod = AUTTPO.AutTpoCod '
set @ClausulaWhere = '(Avisos.AviSbpCod <> 5) and (Avisos.AviSbpCod <> 3) and (DetAutTpoC = ' + convert(varchar(10),@Tipo) + ')'

set @SentenciaSELECT = 'SET NOCOUNT ON;'
set @SentenciaSELECT = @SentenciaSELECT + 'SELECT ' + @ColumnasSalida
set @SentenciaSELECT = @SentenciaSELECT + @Order
set @SentenciaSELECT = @SentenciaSELECT + ' INTO #Results '
set @SentenciaSELECT = @SentenciaSELECT + 'FROM ' + @ClausulaFrom
set @SentenciaSELECT = @SentenciaSELECT + 'WHERE ' + @ClausulaWhere + ';'
set @SentenciaSELECT = @SentenciaSELECT + 'SELECT COUNT(*) as RecordCount into #CantidadRegistros FROM #Results;'
set @SentenciaSELECT = @SentenciaSELECT + 'SELECT Reg.RecordCount as CanReg, Resultado.* FROM #Results Resultado CROSS JOIN #CantidadRegistros Reg WHERE RowNumber BETWEEN ' + convert(varchar(10),((@PageIndex -1) * @PageSize + 1)) + ' AND ' + convert(varchar(10),((@PageIndex -1) * @PageSize + 1) + @PageSize - 1) + ';'
set @SentenciaSELECT = @SentenciaSELECT + 'DROP TABLE #Results; DROP TABLE #CantidadRegistros;'

execute(@SentenciaSELECT)

END
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.