使用Oracle APEX 5.0.4和Oracle 12c。我正在尝试在Oracle APEX中编写REST服务。我有一个SQL语句......
select * from <my_table> where company_name = 'GOOGLE INC.'
从直接的SQL提示符运行时,它会运行并返回数据。我试图在REST服务中实现它,特别是使用URI模板。我正在使用绑定变量,所以我的查询现在看起来像。
select * from <my_table> where company_name = :ACCT_NAME;
我公司名称中的空格和句点都会导致我出现问题,不会返回任何行。如果我的BIND VARIABLE是一个单词,那么没问题。我找到了UTL_URL.UNESCAPE,并试图使用它。这似乎解决了有空间的问题,但在公司名称包含句点时没有解决问题。
我将我的SQL语句改写为
select * from <my_table> where company_name = UTL_URL.UNESCAPE(:ACCT_NAME);
如果BIND VARIABLE(又名公司名称)是多个单词,但不包含句点,则查询将起作用。例如,我可以通过设置我的绑定变量='GOOGLE%20INC'来查找'GOOGLE INC'。我需要能够查找'GOOGLE INC'。 [注意INC结束时的期间]所以我设置我的绑定变量='GOOGLE%20INC%2E',我一直得到'BAD REQUEST'。看来URI模板无效。
如果我通过直接的SQL语句(也称为REST服务的OUTSIDE)传递此信息,则会找到我的数据...
select * from <my_table> where company_name = UTL_URL.UNESCAPE('GOOGLE%20INC%2E');
PERIOD角色有一些独特的东西......有什么想法吗?