Cuanto ante_sql

Espero que no te este incomodando con estas preguntas, pero son preguntas que me dejaron
en la escuela y quisiera que me ayudes cuanto antes por favor
I.Se tiene la tabla proveedor(codprov, nomprov, direcc. Telef. Ruc):
Realizar un procedimiento que permita modificar el ruc, solamente del cliente cuyo código sera ingresado como parámetro
II. Se tiene la tabla alumnos y cursos relacionados con el campo codalum. Diga como mostrar el
código del alumno, nombre, turno, nombre del curso de todos que estudien en el mismo turno que
el laumno MIDCHEL JAGER
III.como hacer una restricción tipo click para el campo fecha-ins de tal manera que solamente
debe aceptar fechas a partir del 2000
disculpa por la simpleza pero es que recién estoy aprendiendo espero que no te ofendas
gracias de ante mano

1 respuesta

Respuesta
La preguntas me las has formulado incorrectamente ya que ni me especificas con que lenguaje estas trabajando ( ya que no se si los valores se pasan por algún script en internet o bien son procedimientos almacenados ), y además no me dices la estructura que posee la bbdd
II
Solo utilizo el servicio sql 7 desktop.
Y son procedimientos almacenados .
La relación entre alumnos y cursos es de uno a muchos un alumno puede llevar varios cursos codalum es PORQUE en la tabla alumnos y FK en la tabla cursos.
La tabla alumnos tiene los campos:
codalum(codigo del alumno PK), nom(nombre del alumno),turno(del alumno).
la tabla cursos tiene los sgtes campos:
codcur(codigo del curso), nomcur(nombre del curso),y codalum (que viene por la relacion con la otra tabla FK).
III.
Fecha-ins. Es fecha de inscripción que puede ser de un empleado .
Y lo que no se es a que se refiere con --- una restricción tipo click---
Podrías darme un ejemplo con este campo
I. Update proveedor set ruc = dato where codprov = codigo
II. select codigo, nombre, turno, nomcurso from alumnos, cursos where alumnos.idalumno = cursos.idalumno and alumnos.nombre = 'MIDCHEL JAGER'
III. No entiendo esta pregunta, pero creo que restricción tipo click es el manejo de algún evento.
Esta es la BD exacta y e estado indagando a partir de tus respuestas
Y tengo tudas solo necesito que me ayudes ya que no me salen y la
Verdad ya no doy, solo quiero tu ayuda profesional, son las sgtes.
-----------------------------------------
create database importaciones100
on
(
name= importaciones100_dat,
filename='c:\transa1\importaciones100_dat.mdf'
)
log on
(
name= importaciones100_log,
filename='c:\transa1\importaciones100_log.ldf'
)
-----------------------------------------------------
create table alumnos
(
codalum char(8) primary key check (codalum like 'alum[0-9][0-9][0-9][0-9]'),
nombre char(20) not null,
turno char(10) not null
)
-----------------------------------------------------
create table cursos
(
codcur char(7) primary key check (codcur like 'cur[0-9][0-9][0-9][0-9]'),
codalum char(8) not null foreign key references alumnos (codalum),
curso varchar(20) not null
)
-------------------------------------------------------
create table proveedor
(
codprov char(8) primary key check (codprov like 'prov[0-9][0-9][0-9][0-9]'),
nomprov char(12) not null,
direcc varchar(25) not null,
telef varchar(7) not null,
ruc char(11) not null,
)
-------------------------------------------------------
create table clientes
(
codcli char(7) primary key check (codcli like 'cli[0-9][0-9][0-9][0-9]'),
nombre char(15) not null,
ruc char(11) not null
)
ALTER TABLE clientes
ALTER COLUMN nombre char(20)
______________________________________________________________________________________-
insert into alumnos(codalum,nombre,turno) values ('alum0003','van vasten','mañana')
insert into alumnos(codalum,nombre,turno) values ('alum0004','raul romero','tarde')
insert into cursos(codcur,codalum,curso) values ('cur0002','alum0003','MATEMATICAS')
insert into cursos(codcur,codalum,curso) values ('cur0003','alum0004','ANATOMIA')
select *from PROVEEDOR
update cursos set curso='INFORMATICA' where codcur='cur0002'
insert into proveedor(codprov,nomprov,direcc,telef,ruc) values ('prov0001','MARTI MARCIA','av.lima','5472476','12345678965')
insert into proveedor(codprov,nomprov,direcc,telef,ruc) values ('prov0002','JIMY NEUTRON','av.BRASIL','5470054','98745678965')
insert into clientes(codcli,nombre,ruc) values ('cli0001','VANBUITEN SIMOND','32165498787')
insert into clientes(codcli,nombre,ruc) values ('cli0000','VAN HERSLEY','65453498788')
insert into clientes(codcli,nombre,ruc) values ('cli0003','MARK WILMOND','32165498789')
insert into clientes(codcli,nombre,ruc) values ('cli0004','ROBERTO CARLOS','32165498721')
select *from clientes
update clientes set nombre='ROLL FALNISTERROY' where codcli='cli0000'
update alumnos set nombre='patrick kuivert' where codalum='alum0004'
-----------------------------------------------------------------------
II)
select TABLE_ID=a.codalum,TABLE_NAME=a.nombre,TUR_ALUM=a.turno,CUR_ALUM=c.curso from alumnos a inner join cursos c on a.codalum=c.codalum where a.nombre='midchel jager' and a.turno='mañana'
select codigo,nombre
No se como hacerle creer al sql que quiero el turno del alumno especificado sin saber sin es
MAÑANA, TARDE o NOCHE solo cuando lo ejecute
-------------------------------------------------------
-------------------------------------------------------
I)
Con respecto a la pregunta de modificar el R.U.C.
create procedure sp_nuevo @xcod char(4), @xruc char(11) as
begin transaction
declare @c_cod char(4),@c_nom varchar(20),@c_ruc char(11)
declare c_cliente cursor for select codcli,nombre,ruc from clientes where codcli=@xcod ;
open c_cliente
fetch c_cliente into @c_cod,@c_nom,@c_ruc
while @@fetch_status = 0
begin
update clientes set ruc=@xruc where current of c_cliente
fetch c_cliente into @c_cod,@c_nom,@c_ruc
end
close c_cliente
deallocate c_cliente
print ("verificado.....")
select *from clientes
if @@error<>0
begin
rollback transaction
print('proceso ok...')
end
else
begin
commit transaction
print('proceso ok...')
end
EXEC SP_NUEVO @XCOD='cli0000', @XRUC='11111111111'
Con respecto a la pregunta de modificar el R.U.C.
I. Veamos, este es un procedimiento de oracle que tengo echo yo, excepto algunas modificaciones, está correcto para sqlserver, espero que te sirva.
create procedure modificar
(
i_idt IN Transportistas.Idt%TYPE,
i_codigo IN Transportistas.Codigo%TYPE,
i_login IN Transportistas.Login%TYPE,
i_nif IN Transportistas.Nif%TYPE,
i_nombretransportista IN Transportistas.Nombre%TYPE,
i_apellidostransportista IN Transportistas.Apellidos%TYPE,
i_direccion IN Transportistas.Direccion%TYPE,
i_ciudad IN Transportistas.Ciudad%TYPE,
i_provincia IN Transportistas.Provincia%TYPE,
i_zip IN Transportistas.Zip%TYPE,
i_telefono IN Transportistas.Telefono%TYPE,
i_telmovil IN Transportistas.Telmovil%TYPE,
i_fax IN Transportistas.Fax%TYPE,
i_email IN Transportistas.Email%TYPE,
i_web IN Transportistas.Web%TYPE,
i_permiso IN Transportistas.Permiso%TYPE,
i_observaciones IN Transportistas.Observaciones%TYPE,
i_alias IN Transportistas.Alias%TYPE,
i_foto IN Transportistas.Foto%TYPE,
i_autonomo IN Transportistas.Autonomo%TYPE,
i_idca IN Vehiculos.Idca%TYPE,
o_codigo OUT NUMBER
)
IS
CURRIDT NUMBER(10);
v_Existe VARCHAR2(40);
CURSOR c_Codigo IS
SELECT Nombre
FROM Transportistas
WHERE Idt = i_idt;
CURSOR c_Repetido IS
SELECT Nombre
FROM Transportistas
WHERE Codigo = i_codigo AND Idt <> i_idt;
BEGIN
OPEN c_Codigo;
FETCH c_Codigo INTO v_Existe;
IF v_Existe IS NULL THEN
o_codigo := 0;
ELSE
v_Existe := '';
OPEN c_Repetido;
FETCH c_Repetido INTO v_Existe;
IF v_Existe IS NULL THEN
UPDATE Transportistas
SET Codigo = i_codigo, Login = i_login, Nif = i_nif, Nombre = i_nombretransportista,
Apellidos = i_apellidostransportista, Direccion = i_direccion, Ciudad = i_ciudad, Provincia = i_provincia,
Zip = i_zip, Telefono = i_telefono, Telmovil = i_telmovil, Fax = i_fax, Email = i_email,
Web = i_web, Permiso = i_permiso, Observaciones = i_observaciones, Alias = i_alias, Foto = i_foto,
Autonomo = i_autonomo
WHERE Idt = i_idt;
SELECT Last_Number - 1 INTO CURRIDT FROM All_Sequences WHERE Sequence_Name = 'TRANSPORTISTAS_SEQ';
IF i_autonomo = 0 THEN
IF i_idca <> 0 THEN
DELETE FROM Veh_Cond WHERE ( Idt = CURRIDT OR Idca = i_idca );
END IF;
ASIGNARVEHICULOCONDUCTOR (CURRIDT, i_idca);
END IF;
o_codigo := 1;
ELSE
o_codigo := 0;
END IF;
CLOSE c_Repetido;
END IF;
CLOSE c_Codigo;
END;
La programación que enviaste bota errores seguidos cuando lo ejecuto,
podrías ayudarme de otra manera
La programación que te he enviado lo he hecho en oracle, tu tienes que adaptar este procedimiento almacenado a la bbdd que estés usando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas