Sp_iniciarsesion

Hola nuevamente, estoy realizando el siguiente caso
Tengo la tabla empleado que esta construida de la sgt manera:
create table empleado(
idempleado  char (6) primary key,
iddistrito char (3),
Apellidos varchar (30),
Nombre varchar (30),
Usuario varchar (30),
password varchar (20),
Cargo varchar (30),
Dirección varchar (60),
Teléfono varchar (12),
estadocivil varchar (15),
email varchar (50),
fechacontrato smalldatetime)
Como ya te habrás percatado la tabla empleado esta relacionado con la tabla distrito.
Ahora bien tengo el siguiente procedure...
create procedure sp_iniciarsesion
@usu varchar (30),
@pass varchar (20),
@estado bit output,
@mensaje varchar (300) output
if exists (select usuario, password from empleado where usuario=@usu, password=@pass)
begin
set @estado=1
set @mensaje='usuario autorizado'
end
else
begin
set @estado=0
set @mensaje='usuario o password incorrecto'
end
Ahora bien en el siguiente estore procedure me presenta el siguiente error de sintaxis:
Mens 156, Nivel 15, Estado 1, Procedimiento sp_iniciarsesion, linea 6
Sintaxis incorrecta cerca de la palabra clave 'IF'
¿Espero ser especifico o tiene que ver en algo la relación de la tabla distrito (bueno solo es error de sintaxis) o que me sugieres crear una tabla usuario muy a parte de la tabla empleado?... Espero tu respuesta, te lo agradeceré...
Respuesta
1
Tienes que crear una tabla aparte que están los datos del empleados y otra donde están los datos de acceso al sistema amarrados por una relación.
Create table Empleado(
ID_Empleado int identity(1,1) primary key,
Ape_Paterno varchar(35),
Ape_Materno varchar(35),
Nombres varchar(35),
FE_Nacimiento smalldatetime,
DNI cha(8)
)
Create table Usuarios(
ID_Usuario int identity(1,1) primary key,
Usuario varchar(15),
Password varchar(50),
ID_Empleado references Empleado(ID_Empleado),
FH_Registro datetime
)
Bueno ya solucione sobre el store me falto solo la clausula AS.. ahora bien diem como sería lo recomendable trabajar con una tabla usuario muy a parte de la tabla empleado... espero tu respuesta te lo agradeceré...
Gracias por la sugerencia mi estimado lo haré de esa manera, bueno algo movedoso es el ID_Empleado references Empleado (ID_Empleado); ahora bien dime eso se cumple siempre en cuando, ¿el tipo de dato sea int identity verdad?
No necesariamente, eso hace que se relacionen las tablas, al mismo momento de crearlas, en ves que hagas un altert table add constraint ... pones esas palabritas más y ya ta.
No importa que tipo de dato sea o si es identity o no, lo único importante es que la fk de la tabla sea igual a la porque de la otra y me refiero al tipo de dato y su longitud.
Entiendo mi estimado, ahora bien dime que pasa si es que yo quiero que esa relación sea en CASCADA, también se cumple o no...
Ahora mi estimado quiero que me des una mano en esto...
Estoy realizando procedientos almacenados en mi base de datos que sera para un sistema de ventas (facturación), bueno los hice los procedimientos algo sencillo por que no conozco mucho el T-SQL en fin.
Digamos que este es mi primer SP que se hará referencia a la tabla CLIENTE.
Create procedure sp_actualizarcliente
@idcli char (6),
@nom varchar (25),
@ape varchar (25),
@direc varchar (40),
@dni char (8),
@telf varchar (14),
@iddis char (2)
insert  empleado values (@idcli, @nom, @ape, @direc, @dni, @telf, @iddis)
Bueno esto es con respecto a insertar datos y vuelta tengo que repetir los mismo parámetros, para poder realizar actualizadiones..
update cliente set idcliente=@idcli... y todo lo demas, y vuelta para emilinar obvio qeu es un poco mas pequeño basta con el codigo de la tabla cliente y listo (bueno eso es lo qeu pienso) pero yo me pregunto si es qeu tengo una relacion (en este caso cliente esta relacionada con distrito), que pasara con los procedimientos se cumpliran de manera satisfactorio en .net (como te dije vengo realizando los stores) bueno espero que me des una mano en todo esto y sobre en que momentos aplicar CASCADA (se qeu sirve para eliminar en grupos, pero la verdad no entiendo muy bien sobre esto); sugerencia y observaciones son bienvenido mi estimado... creo que es mucho lo qeu te estoy pidiendo pero te lo agradecere...
Usa cascada cuando estés seguro de eliminar, por ejemplo a tu cliente con todos sus pedidos.
En una relación en cascada, cuando eleiminas la PORQUE de tu tabla maestra te eliminas todos los FK de las demás tablas con las que este relaciona tu tabla maestra.
En cuanto a .net, no se mete en esas cosas, por así decirlo, el solo pasa datos y el sql se encarga de hacer todo el trabajo, y de mandar errores si es que hubieran.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas