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

Procedimiento que genera codigo

Estas en el tema de Procedimiento que genera codigo en el foro de SQL Server en Foros del Web. Alguien me puede explicar detalladamente que hace el procedimiento sp_InsertarAlumno por favor Código: Create Table Alumno( cod_alumno char(6) not null, nombre varchar(30) not null, apellido ...
  #1 (permalink)  
Antiguo 24/04/2012, 08:37
Avatar de xArchangellx  
Fecha de Ingreso: octubre-2008
Ubicación: Peru
Mensajes: 208
Antigüedad: 15 años, 6 meses
Puntos: 5
Pregunta Procedimiento que genera codigo

Alguien me puede explicar detalladamente que hace el procedimiento sp_InsertarAlumno por favor
Código:
Create Table Alumno(
	cod_alumno	char(6) not null,
	nombre		varchar(30) not null,
	apellido	varchar(30) not null,
	f_nacimiento	datetime not null,
	dni			char(8) null,
	sexo		char(1) not null,
	direccion	varchar(80) null,
	telefono	varchar(10) null,
	celular		varchar(11) null,
	foto		image null,
	constraint pk_alu primary key (cod_alumno)
)

create Procedure sp_InsertarAlumno
	@cod_alumno		char(6) output,
	@nombre			varchar(30),
	@apellido		        varchar(30),
	@f_nacimiento	        datetime,
	@dni			        char(8),
	@sexo			char(1),
	@direccion		varchar(80),
	@telefono		varchar(10),
	@celular		        varchar(11),
	@foto			image
as
begin
declare @num int
if (select max(convert(int,substring(cod_alumno,3,6))) from Alumno) is not null
	begin
	select @num=max(convert(int,substring(cod_alumno,3,6))) from Alumno
	select @cod_alumno='AL'+replicate('0',4-dataLENGTH(convert(varchar,@num+1)))+convert(varchar,@num+1)
	end
else  --aqui solo entra la primera vez, para el primer alumno
	select @cod_alumno='AL0001'
Insert Into Alumno(cod_alumno,nombre,apellido,f_nacimiento,dni,sexo,direccion,telefono,celular,foto)
Values(@cod_alumno,@nombre,@apellido,@f_nacimiento,@dni,@sexo,@direccion,@telefono,@celular,@foto)
end 
  #2 (permalink)  
Antiguo 24/04/2012, 09:23
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 que genera codigo

inserta un alumno a tu tabla y te regresa el consecutivo....detalladamente lo que hace es crea una tabla(antes del procedure) manda los valores necesarios para la ejecucion verifica si el hay alumnos en la tabla, en caso de que no haya manda el mensaje de 'AL0001' e inserta en la base el alumno si ya hay alumnos crea el incremental y lo inserta en la base de datos.....

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 24/04/2012, 09:28
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento que genera codigo

Yo te preguntaria, ¿Que tanta experiencia tienes con T-SQL?, ¿Conoces SQL?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 24/04/2012, 09:32
Avatar de xArchangellx  
Fecha de Ingreso: octubre-2008
Ubicación: Peru
Mensajes: 208
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Procedimiento que genera codigo

Lo que sucede que lleve el curso de sql basico, pero ahora estoy llevando el avanzado con otro profesor, y no asisti a esa clase se crear procedimientos almacenados, pero lo del codigo como q no me queda claro

Código:
if (select max(convert(int,substring(cod_alumno,3,6))) from Alumno) is not null
	begin
	select @num=max(convert(int,substring(cod_alumno,3,6))) from Alumno
	select @cod_alumno='AL'+replicate('0',4-dataLENGTH(convert(varchar,@num+1)))+convert(varchar,@num+1)
	end
else  --aqui solo entra la primera vez, para el primer alumno
	select @cod_alumno='AL0001'
  #5 (permalink)  
Antiguo 24/04/2012, 09:46
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
Busqueda Respuesta: Procedimiento que genera codigo

Con peras y manzanas :)
Código SQL:
Ver original
  1. --Buscan si hay alumnos en la tabla para esto se usa la funcion max y convierte este resultado en una cadena convert
  2. IF (SELECT MAX(CONVERT(INT,SUBSTRING(cod_alumno,3,6))) FROM Alumno) IS NOT NULL
  3.     BEGIN
  4. --si hay alumnos en la tabla
  5. --primero obtiene el valor maximo de la tabla y lo hace cadena por ejemplo 1
  6.     SELECT @num=MAX(CONVERT(INT,SUBSTRING(cod_alumno,3,6))) FROM Alumno
  7. --Aqui lo que hace es poner ceros dependiedo la longitud del numero si es un 1 pone 3 0's si es 2 pone 2 etc, ejem si es 10 pondria 'AL0010'
  8.     SELECT @cod_alumno='AL'+replicate('0',4-dataLENGTH(CONVERT(VARCHAR,@num+1)))+CONVERT(VARCHAR,@num+1)
  9.     END
  10. ELSE  --aqui solo entra la primera vez, para el primer alumno
  11.     SELECT @cod_alumno='AL0001'

Dudas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 24/04/2012, 09:51
Avatar de xArchangellx  
Fecha de Ingreso: octubre-2008
Ubicación: Peru
Mensajes: 208
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Procedimiento que genera codigo

Gracias Libras te pasaste hermano
  #7 (permalink)  
Antiguo 24/04/2012, 09:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento que genera codigo

Libras !!!!, hasta de "teacher" la haces !!!!, jajaja
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 24/04/2012, 10:07
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 que genera codigo

Cita:
Iniciado por iislas Ver Mensaje
Libras !!!!, hasta de "teacher" la haces !!!!, jajaja
jajajaja nada que ver :) es solo una orientacion para el compañero xArchangellx.

xArchangellx: Te recomiendo que si no entiendes una parte del codigo como las funciones Max, replicate,dataLENGTH,convert etc, las busques en internet y veas que es lo que hace cada una y vayas armando tu solo el funcionamiento de tu query.

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 24/04/2012, 11:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento que genera codigo

Haciendo la buena labor del dia, te dejo un link interesante sobre SQL

http://www.devjoker.com/mapaweb.aspx

Saludos
__________________
MCTS Isaias Islas

Etiquetas: genera, procedimiento, select
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 17:53.