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

Procedimiento o Funcion?

Estas en el tema de Procedimiento o Funcion? en el foro de SQL Server en Foros del Web. Buen dia con todos. Tengo 2 dudas quizas puedan ayudarme. 1. Tengo una tabla con el campo CodFamilia el cual se almacena incrementalmente: FA001 FA002 ...
  #1 (permalink)  
Antiguo 01/03/2013, 09:21
 
Fecha de Ingreso: marzo-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Procedimiento o Funcion?

Buen dia con todos.

Tengo 2 dudas quizas puedan ayudarme.
1. Tengo una tabla con el campo CodFamilia el cual se almacena incrementalmente:
FA001
FA002
FA003
.. etc
quisiera saber como puedo hacer para obtener el siguiente campo: en este caso
FA004 y mostrarlo
OJO: solo es mostrar el siguiente codigo, antes de hacer cualquier insercion.

2. Es recomendable hacerlo en un procedimiento almacenado o en una funcion?
este dato lo quiero para mostrarlo en un textbox en C#, pero eso no es el inconveniente que tengo

Gracias por su ayuda
  #2 (permalink)  
Antiguo 01/03/2013, 10:32
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 o Funcion?

digamos que simpre va a ser FA001,FA010,FA100 hasta FA999 right?

pues podemos hacerlo asi:
Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. valor VARCHAR(20)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('FA001')
  7. INSERT INTO #temp VALUES ('FA002')
  8. INSERT INTO #temp VALUES ('FA003')
  9. INSERT INTO #temp VALUES ('FA004')
  10. INSERT INTO #temp VALUES ('FA005')
  11. INSERT INTO #temp VALUES ('FA009')
  12. INSERT INTO #temp VALUES ('FA099')
  13.  
  14.  
  15. SELECT
  16. 'FA' +
  17. REPLICATE('0',3-
  18. len(
  19. CONVERT(VARCHAR(20),
  20. MAX(CONVERT(INT,SUBSTRING(valor,CHARINDEX('0',valor,1),len(valor))))+1
  21. )
  22. )) +
  23. CONVERT(VARCHAR(20),
  24. MAX(CONVERT(INT,SUBSTRING(valor,CHARINDEX('0',valor,1),len(valor))))+1
  25. )
  26. FROM #temp


en procedure o funcion ya depende para que lo vas a usar :)
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 01/03/2013, 10:46
 
Fecha de Ingreso: marzo-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Procedimiento o Funcion?

Hola
Gracias por la respuesta

Solo valida hasta FA099.
A partir de FA100 devuelve el resultado FA001.


Saludos
  #4 (permalink)  
Antiguo 01/03/2013, 10:49
 
Fecha de Ingreso: marzo-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Procedimiento o Funcion?

Asi queda la consulta que implemente

select 'FA'+ RIGHT('000' + CAST(max( right( valor, 3 ) )+1 AS VARCHAR),3)

Saludos
  #5 (permalink)  
Antiguo 01/03/2013, 10:56
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 o Funcion?

Cita:
Iniciado por joselitopepeFe Ver Mensaje
Asi queda la consulta que implemente

select 'FA'+ RIGHT('000' + CAST(max( right( valor, 3 ) )+1 AS VARCHAR),3)

Saludos
jejeje mas sencillo que mi consulta :P

y la mia tenia de mas quedaria asi :P

Código SQL:
Ver original
  1. SELECT
  2. 'FA' +
  3. REPLICATE('0',3-
  4. len(
  5. CONVERT(VARCHAR(20),
  6. MAX(CONVERT(INT,SUBSTRING(valor,3,len(valor))))+1
  7. )
  8. )) +
  9. CONVERT(VARCHAR(20),
  10. MAX(CONVERT(INT,SUBSTRING(valor,3,len(valor))))+1
  11. )
  12. FROM #temp
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 01/03/2013 a las 11:03

Etiquetas: procedimiento, tabla
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:58.