En este post veremos como usar los metodos POST y PUT para hacer updates e insert.
Para ver como funciona el GET pueden revisar mis anteriores post:
- Oracle APEX usar RESTful Data Services, URL Template con 2 o más parámetros
- Oracle APEX usar RESTfull Data Services, HTTP Header con 2 o más parámetros
Usaremos el metodo POST para el insert
Para ello creamos en ORDS nuestro template on el metodo POST y en la sección de código agregamos el insert, se puede hacer uso de procedimientos almacenados, funciones, lo que se necesite, solo considerar las variables BIND.
declare
new_id number;
begin
insert into emp
( empno
, ename
, job
, mgr
, hiredate
, sal
, comm
, deptno)
values (
null
, :ename
, :ejob
, :mgr
, sysdate
, :sal
, :comm
, :deptno)
returning empno into new_id;
:status_code := 201;
apex_json.open_object;
apex_json.write('success',true);
apex_json.write('message', 'Employee inserted with ID: ' || new_id);
apex_json.close_object;
exception
when others then
:status_code := 400;
apex_json.open_object;
apex_json.write('success',false);
apex_json.write('message', sqlerrm);
apex_json.close_object;
end;
Note que se ha añadido
apex_json.open_object
para dar una respuesta.
Para hacer la prueba continuaremos usando POSTMAN y los parámetros los enviaremos en el body en formato JSON.
En el ejemplo insertare al empleado ANGEL_2
{
"ename" : "ANGEL_2"
, "job" : "MANAGER"
, "sal": 1000
}
En el mensage de retorno podemos ver el usuario insertado correctamente.
PUT para el update
Para ello creamos en ORDS nuestro template on el metodo PUT y en la sección de código agregamos el UPDATE, se puede hacer uso de procedimientos almacenados, funciones, lo que se necesite, solo considerar las variables BIND.
En el código, la clave primaria para actualizar será empno.
begin
update emp
set ename = nvl(:ename,ename)
, job = :job
, sal = :sal
, comm = :comm
, deptno = :deptno
where empno = :empno;
apex_json.open_object;
apex_json.write('success',true);
apex_json.write('message','Empno: ' || :empno || ' updated');
apex_json.close_object;
:status := 200;
exception
when others then
:status := 400;
apex_json.open_object;
apex_json.write('success',false);
apex_json.write('message', sqlerrm);
apex_json.close_object;
end;
Para hacer la prueba continuaremos usando POSTMAN y los parámetros los enviaremos en el body en formato JSON.
En el ejemplo actualizare al empleado con ID 7499