pl/sql, ayuda!!
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;
/
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;
/
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
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
