Saludos a todos los presentes. Soy nuevo en este foro y estoy utilizando Oracle Database Enterprise. Soy un estudiante y estoy viendo base de datos.
Estoy con un problema medio extraño a mi parecer. Eh creado un procedimiento llamado "modify_salary_by_number"
create or replace PROCEDURE hc.modify_salary_by_number
(p_emp_id IN NUMBER,
p_new_salary hc.employees.salary%TYPE)
IS
dyn_error VARCHAR2(255);
BEGIN
UPDATE hc.employees
SET salary = p_new_salary
WHERE employee_id = p_emp_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dyn_error := 'Id no Found';
RAISE_APPLICATION_ERROR(-41251,dyn_error);
WHEN OTHERS THEN
dyn_error := 'Id Incorrect or Salary exceeds the maximun';
RAISE_APPLICATION_ERROR(-51251,dyn_error);
END modify_salary_by_number;
/
Cuando lo compilo, lo crea sin problemas. Pero cuando ejecuto la sentencia:
EXECUTE modify_salary_by_number(4, 1451)
Sale el error ORA-00900: Sentencia SQL Invalida. Porque?
Pero cuando lo ejecuto en archivos de comandos me sale: "Block anonymous completed"
Y cuando hago un SELECT * from EMPLOYEES; para ver los datos, me doy cuenta que si lo cambio.
Sin embargo, cuando hago un: EXECUTE modify_salary_by_number("" , 1451)
Lo ejecuto en archivos de comandos (Para probar los errores) me sale: "Block anonymous completed"
Y no entiendo porque, Si los parametros deben ser NUMBER.
No entiendo la verdad... Quisiera que me absuelvan mis dudas porfavor.