jueves, 12 de junio de 2008

Custom Stored Procedure Complete II - Procedimiento Almacenado Personalizado Completo II

Hello, my last post about a custom stored procedure was limited when we want to work with INNER JOIN, so this is more comprehensive because it contains a parameter called tablesInner which I used to receive all INNER JOIN we want to add to the query. Any question leave me a comment.
--------------------------------------------------------------------------------------------
Hola, mi último post acerca de un procedimiento almacenado personalizado se limitaba cuando queremos trabajar con INNER JOIN, por lo que este es más completo porque contiene un parámetro llamado tablesInner que he usado para recibir todos los INNER JOIN que queremos añadir a la consulta. Cualquier pregunta me dejan un comentario.


--Custom Stored Procedure II - Contains a parameter called tablesInner
--which I used to receive all INNER JOIN we want to add to the query
create proc uspExecuteMultiSentences
@fields varchar(500),
@database varchar(80),
@table varchar(50),
@filters varchar(500),
@Nrodatabase varchar(4)='',
@tablesInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablesInner) = 0
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '' + @Nrodatabase + '..' + @table + ' WHERE ' + @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '..' + @table + ' WHERE ' + @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' WHERE ' + @filters + ''
end
Else
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + ''+ @Nrodatabase + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
end
exec(@sSQL)

--Executing Custom Stored Procedure
exec uspExecuteMultiSentences 'C.cCodCus,C.cNamPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetailCustomer DC ', ' DC.cTypeDetCus = ''FR'' and DC.cCodDetCus = ''0123456789''', '', ' INNER JOIN dbCustomer..Customer C ON DC.cCodCus = C.cCodCus '
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

--Procedimiento Almacenado Personalizado II - El cual contiene
--un parametro llamado tablasInner que utilizo para recibir todos los INNER JOIN

--para la consulta
create proc uspEjecutaMultiSentencia
@campos varchar(500),
@basedatos varchar(80),
@tabla varchar(50),
@filtros varchar(500),
@Nrobasedatos varchar(4)='',
@tablasInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablasInner) = 0
begin
If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '' + @Nrobasedatos+ '..' + @tabla + ' WHERE ' + @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '..' + @tabla + ' WHERE ' + @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' WHERE ' + @filtros + ''
end
Else
begin

If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + ''+ @Nrobasedatos+ '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
end
exec(@sSQL)
--Ejecutando Procedimiento Almacenado
exec uspEjecutaMultiSentencia 'C.cCodPer,C.cNomPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetalleCliente DC ', ' DC.cTipoDetalle = ''FR'' and DP.cCodDet = ''0123456789''', '', ' INNER JOIN dbCliente..Cliente C ON DC.cCodPer = C.cCodPer '

See you.Happy Coding – Nos vemos. Feliz programacion

No hay comentarios: