pl/sql, ayuda!!

laura1
28 de Noviembre del 2003
quisiera saber si ven algun error en el programa porque al correrlos no hacen nada ...gracias


1.- En la tabla emp incrementar el salario el 10% a los empleados que tengan una comisión superior al 5% del salario.



create table EMP(
id_empl number(3) not null,
nomb_empl varchar2(25) not null,
SAL number (10) not null,
COMM number (4) not null,
)

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (103, ‘María Cecilia’, 110000,5);

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (112, ‘Juan Alberto’, 100000,6);



BEGIN
UPDATE EMP
SET SAL=SAL+SAL*(10/100)
WHERE COMM>(SAL*5/100);
END;
/

2.- Añadir la columna total2 y en ella escribir la suma del salario y la comisión de los empleados con comisión distinta de 0.


create table EMP(
id_empl number(3) not null,
nomb_empl varchar2(25) not null,
SAL number (10) not null,
COMM number (4) not null,
)

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (103, ‘María Cecilia’, 110000,5);

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (112, ‘Juan Alberto’, 100000,6);


ALTER TABLE EMP ADD(TOTAL2 NUMBER(7,2));
DECLARE
CURSOR CURSOR2 IS SELECT COMM,SAL FROM EMP
WHERE COMM IS NOT NULL AND COMM<>0 FOR UPDATE;
BEGIN
FOR REG IN CURSOR2 LOOP
UPDATE EMP
SET TOTAL2=SAL+COMM
WHERE CURRENT OF CURSOR2;
END LOOP;
END;
/









TheKing
28 de Noviembre del 2003
te pongo entre /*************/ los errores que he visto

1.- En la tabla emp incrementar el salario el 10% a los empleados que tengan una comisión superior al 5% del salario.



create table EMP(
id_empl number(3) not null,
nomb_empl varchar2(25) not null,
SAL number (10) not null,
COMM number (4) not null,
)
/*******************************/
La tabla no te la crea ya que te sobra la ultima coma despues del ultimo not null
/*******************************/

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (103, ‘María Cecilia’, 110000,5);

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (112, ‘Juan Alberto’, 100000,6);



BEGIN
UPDATE EMP
SET SAL=SAL+SAL*(10/100)
WHERE COMM>(SAL*5/100);
END;
/
/*************************************/
No hace nada ya que la condicion WHERE COMM>(SAL*5/100); jamas se cumple
/*************************************/
2.- Añadir la columna total2 y en ella escribir la suma del salario y la comisión de los empleados con comisión distinta de 0.


create table EMP(
id_empl number(3) not null,
nomb_empl varchar2(25) not null,
SAL number (10) not null,
COMM number (4) not null,
)

/*******************************/
La tabla no te la crea ya que te sobra la ultima coma despues del ultimo not null
/*******************************/

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (103, ‘María Cecilia’, 110000,5);

INSERT INTO empleado(id_empl, nomb_empl, SAL, COMM)

VALUES (112, ‘Juan Alberto’, 100000,6);

/*******************************/
Los registro no te los insertara ya que la tabla empleado no existe
/*******************************/

ALTER TABLE EMP ADD(TOTAL2 NUMBER(7,2));
DECLARE
CURSOR CURSOR2 IS SELECT COMM,SAL FROM EMP
WHERE COMM IS NOT NULL AND COMM<>0 FOR UPDATE;
BEGIN
FOR REG IN CURSOR2 LOOP
UPDATE EMP
SET TOTAL2=SAL+COMM
WHERE CURRENT OF CURSOR2;
END LOOP;
END;
/

/*******************************/
No funciona ya que si añades un number (7,2), de los 7 te coje 2 para decimales, y por lo tanto la suma sal+com no es valida para esta columna, ampliala.
/*******************************/


Espero haberte ayudado