2016-04-02 16 views
0

Oracle 12c 12.1.0.2, SQL Developer 4.1.3.20Oracle ORDS 3.0.4 POST PL/SQL-Prozedur 400 Bad Request

Im Anschluss an die Online-Tutorials wurde ORDS installiert (kein APEX) und die Funktion Auto-Aktivierung funktioniert gut einschließlich POST an die aktivierte (emp) Tabelle, so dass die Umgebung in Ordnung zu sein scheint. Aber wenn ich versuche, einen PL/SQL-Dienst in einem POST zu definieren, kann ich nirgends hinkommen. Hier ist die Service-Definition:

-- ORDS has been started in Standalone mode in SQL developer here 

CREATE OR REPLACE PROCEDURE test_proc IS 
BEGIN 
    INSERT INTO emp (empno, ename) VALUES (10, 'TEST'); 
END test_proc; 
/

BEGIN 
    ORDS.DEFINE_SERVICE(
     p_module_name => 'test' , 
     p_base_path => 'test/', 
     p_pattern  => 'simple_insert/', 
     p_method  => 'POST', 
     p_source_type => ords.source_type_plsql, 
     p_source => 'BEGIN 
    hr.test_proc; 
END;'); 
COMMIT; 
END; 
/

-- At this point the service is defined and running, testing with Postman yields "400 Bad Request" 

GRANT EXECUTE ON hr.test_proc TO APEX_PUBLIC_USER; -- Despite being decoupled from APEX this  username still remains in ORDS 3.0.4, appears in .\ords\conf\apex.xml 

-- Same error as before, having the priv makes no difference 

Fehlermeldungen in Postbote:

400 Bad Request 
mapped request using: /hr/* to: ORDS:apex_pu.HR 
BadRequestException [statusCode=400, reasons=[Expected one of: <<{,[>> but got: <>]] 

Antwort

3

ich keinen Experten mit dieser bin, aber ich habe gerade dieses Problem gestoßen. Die Lösung für mich bestand darin, etwas im Anfragetext zu übergeben (obwohl Ihre Routine es nicht verwendet).

Auch dies funktioniert:

{} 

Wenn Sie eine GET Methode versucht, würden Sie nicht alles in übergeben müssen, aber die POST braucht. (und ich nehme an, Sie müssen POST verwenden - das gleiche wie ich).

Viel Glück