Forum Stats

  • 3,751,473 Users
  • 2,250,366 Discussions
  • 7,867,435 Comments

Discussions

"ORA-20987: Error at line 1, col 1: expected [ or {" -> when using REST Data Source in IG

User_LM318
User_LM318 Member Posts: 4 Green Ribbon

Hi,

Using the great tutorial here: https://www.youtube.com/watch?v=4a9VxZjnT7E

I have setup a WEB API application running on a simple Department table (DepartmentId, DepartmentName).

I have also created a REST Data Source in APEX and added the PUT operation.

Then, I created a simple IG based on the REST Data Source.

Now, when I try to update (PUT) any of the values in the table, the method is actually executed (I can see the change in the underlying DB) but I also I get the following error:

ora_sqlerrm: ORA-20987: Error at line 1, col 1: expected [ or {
error_backtrace: ORA-06512: at "APEX_200200.WWV_FLOW_INTERACTIVE_GRID", line 8425
ORA-06512: at "APEX_200200.WWV_FLOW_INTERACTIVE_GRID", line 8448
ORA-06512: at "APEX_200200.WWV_FLOW_PROCESS_NATIVE", line 1140
ORA-06512: at "APEX_200200.WWV_FLOW_PLUGIN", line 2757
ORA-06512: at "APEX_200200.WWV_FLOW_PROCESS", line 203

component: APEX_APPLICATION_PAGE_PROCESS Department - Save Interactive Grid Data (17097396615592433)

Note when testing the PUT method from POSTMAN - everything seems to be OK.

Tagged:

Answers

  • User_LM318
    User_LM318 Member Posts: 4 Green Ribbon
    edited Mar 14, 2021 6:43PM

    Found the cause... In my WEB API I was returning a string but APEX seems to be expecting an HTTP response.

    So changed:

    public string Put(Department dep)

           {

               try

               {

                   string query = @"

                       update dbo.Department set DepartmentName=

                       '" + dep.DepartmentName + @"'

                       where DepartmentId="[email protected]"

                       ";

                   DataTable table = new DataTable();

                   using (var con = new SqlConnection(ConfigurationManager.

                       ConnectionStrings["EmployeeAppDB"].ConnectionString))

                   using (var cmd = new SqlCommand(query, con))

                   using (var da = new SqlDataAdapter(cmd))

                   {

                       cmd.CommandType = CommandType.Text;

                       da.Fill(table);

                   }


                   return "Successfuly updated row!";

               }

               catch (Exception)

               {

                   return "Could not update row!";

               }

           }



    to


    public HttpResponseMessage Put(Department dep)

           {

               try

               {

                   string query = @"

                       update dbo.Department set DepartmentName=

                       '" + dep.DepartmentName + @"'

                       where DepartmentId="[email protected]"

                       ";

                   DataTable table = new DataTable();

                   using (var con = new SqlConnection(ConfigurationManager.

                       ConnectionStrings["EmployeeAppDB"].ConnectionString))

                   using (var cmd = new SqlCommand(query, con))

                   using (var da = new SqlDataAdapter(cmd))

                   {

                       cmd.CommandType = CommandType.Text;

                       da.Fill(table);

                   }


                   return Request.CreateResponse(HttpStatusCode.OK, table);

               }

               catch (Exception)

               {

                   return Request.CreateResponse(HttpStatusCode.NotFound, "Could not update row!");

               }

           }


    Hope it helps someone!