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

[SOLUCIONADO] Procedimiento Almacenado

Estas en el tema de Procedimiento Almacenado en el foro de SQL Server en Foros del Web. Buenas Tarde; alguien me podra ayudar... con un problema que tengo??? Necesito que mi sistema se conecte a las distintas tablas de mi base de ...
  #1 (permalink)  
Antiguo 05/06/2012, 12:05
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Sonrisa Procedimiento Almacenado

Buenas Tarde;

alguien me podra ayudar... con un problema que tengo???

Necesito que mi sistema se conecte a las distintas tablas de mi base de datos pero no se como hacerlo mi sistema esta en visual Studio y mi base de datos en SQL.

me explico mejor:

yo quiero que cuando mi usario escoja por ejemplo año 2001 periodo Abril Mayo

el sistema se conecte a mis distintas tablas que tienen el prefijo de AJU; JOL; JOJ.... pero estas tablas estan por ejemplo "AJU11AM" (AJUSTE+2011+ABRIL MAYO) y tengo desde el 2008 hasta el presente año con todos los meses Diciembre-Enero, enero-febrero... y asi sucesivamente....

mi problema es que no se como hacer la conexion. no se si me explico... Gracias de Antemano

  #2 (permalink)  
Antiguo 05/06/2012, 13:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento Almacenado

como que una tabla por cada mes?? :S bueno cada quien, que es lo que no sabes hacer? la conexion con tu base? o como sacar los datos que necesitas? o las 2 cosas??

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/06/2012, 07:00
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento Almacenado

las tablas ya estan hechas, no las hice yo.... esas se van creando automaticamente todos los meses por otro sistema.... la conexion es lo que no se hacer... osea yo la se hacer cuando las tablas son fijas no cuando varian todos los meses
  #4 (permalink)  
Antiguo 07/06/2012, 07:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento Almacenado

query dinamico amiga :)

hay una vista de sistema que te regresa los nombres de tus objetos de la base de datos, asi que puedes usar esto para saber los nombres y vas armando tu cadena, la vista que te digo es esta:

select * from information_schema.tables
where table_type = 'base table'



Mira aqui te dejo un ejemplo de como obtener todos los renglones de todas las tablas de tu base de datos

Código SQL:
Ver original
  1. ---Obtener los nombres de todas las tablas de una base y sacar cuantos registros tiene cada una de ellas
  2. DROP TABLE #temp
  3. DROP TABLE #total
  4. SELECT TABLE_NAME, IDENTITY(INT,1,1) AS ROW
  5. INTO #temp
  6. FROM information_schema.TABLES
  7. WHERE table_type = 'base table' AND TABLE_NAME LIKE '%aqui el nombre en comun de tus tablas%'
  8. CREATE TABLE #total(
  9. tabla VARCHAR(200),
  10. total INT
  11. )
  12.  
  13. DECLARE
  14. @contador INT,
  15. @query VARCHAR(MAX),
  16. @x INT,
  17. @nombre VARCHAR(200)
  18.  
  19. SELECT @contador=COUNT(*) FROM #temp
  20. SET @x=1
  21. SET @query=''
  22. while @x<=@contador
  23. BEGIN
  24.     SELECT @nombre=TABLE_NAME FROM #temp WHERE ROW=@x
  25.        
  26.     SET @query='select count(*), ' + CHAR(39) + @nombre + CHAR(39) + ' from ' + @nombre + ' with(nolock)'
  27.     EXEC Sp_sqlExec @query    
  28.     SET @x=@x+1
  29. END
  30.  
  31. SELECT * FROM #total ORDER BY total DESC

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/06/2012, 08:03
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento Almacenado

una pregunta yo puedo concatenar un FROM? yo estaba pensado en que cuando el usuario elija el periodo supongamos eligio 12MJ que seria (2012+mayo-junio) yo no puedo hacer un select que diga por ejemplo

select montos from total @periodo .....


algo asi no se si me entiendes? osea que sea total12MJ (total2012mayojunio) o si eligio 11EF sea total11EF (total 2011 enero febrero)
  #6 (permalink)  
Antiguo 07/06/2012, 08:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento Almacenado

sip si te fijas en el ejemplo que puse obtiene el from de toooodas las tablas usando un query dinamico (un string que contiene el select que se va ejecutando) asi que se puede hacer lo que tu dices seria algo asi:


Código SQL:
Ver original
  1. CREATE PROCEDURE dinamico (@tabla VARCHAR(MAX)
  2. AS
  3. BEGIN
  4.  
  5. DECLARE  @query VARCHAR(MAX)
  6.  
  7. SET @query='select * from ' + @tabla
  8. EXEC Sp_sqlExec @query
  9.  
  10. END

asi si tu usuario selecciona tabla1 entonces mandara los datos de tabla1 si pone tabla2 entonces los de tabla 2 :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 07/06/2012, 09:30
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento Almacenado

y la condicion como la colocaria porque la agrego y me da error
de group



where CodPesAnt>=1000 and CodPesAnt<=1094
GROUP BY [CodPesAnt]
order by [CodPesAnt] asc'
  #8 (permalink)  
Antiguo 07/06/2012, 09:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Procedimiento Almacenado

Código SQL:
Ver original
  1. CREATE PROCEDURE dinamico (@tabla VARCHAR(MAX)
  2. AS
  3. BEGIN
  4.  
  5. DECLARE  @query VARCHAR(MAX)
  6.  
  7. SET @query='select * from ' + @tabla + 'where CodPesAnt>=1000 and CodPesAnt<=1094
  8. GROUP BY [CodPesAnt]
  9. order by [CodPesAnt] asc'
  10.  
  11. EXEC Sp_sqlExec @query
  12. END

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 07/06/2012, 09:53
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento Almacenado

ya resolvi!!! Gracias

Etiquetas: procedimiento, sql, tabla, almacenar
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:14.