Skip to main content


OCI Email Delivery Service - multiple recipients

To send mails in our projects most often we use Oracle Cloud Email Delivery Service. From official OCI Email Delivery description you can find: "Oracle Cloud Infrastructure Email Delivery is an email sending service that provides a fast and reliable managed solution for sending high-volume emails that need to reach your recipients' inbox. Email Delivery provides the tools necessary to send application-generated email for mission-critical communications such as receipts, fraud detection alerts, multi-factor identity verification, and password resets." ... sounds good ? yes and works good as well ; ) Buuuut two weeks ago I found some issue according send mail to multiple recipients. All multiple recipients mails stucked ! After few minutes of investigation I found a reason. OCI Email Delivery Service accepts only coma as a recipients separator without any other char. To fix it I prepared small function which parses string containing email addresses and retur
Recent posts

How to return json with null value using apex_json.write(ref_cursor)

Few days ago I had to develop dynamic query json export module. As a sandbox I prepared PLSQL block: DECLARE c sys_refcursor; l_sql varchar2(4000) := 'select null as "col1", 100 as "col2" from dual union all select 200 as "col1", null as "col2" from dual'; l_file clob; BEGIN open c for l_sql; apex_json.initialize_clob_output; apex_json.open_object; apex_json.write('rowset', c); apex_json.close_object; l_file := apex_json.get_clob_output; apex_json.free_output; DBMS_OUTPUT.PUT_line(l_file); END; { "rowset": [{ "col2": 100 }, { "col1": 200 } ] } As you can see above PLSQL code doesn't return null value pairs : ( apex_json.write(p_name IN VARCHAR2, p_cursor IN OUT NOCOPY sys_refcursor) procedure Signature 14 doesn't support null. How to fix it... ? APEX API provides apex_js

APEX Connect 2019 - After the first ever conference speech

This year I was first time presenter on APEX Connect 2019 in Bonn. First time ever! This was a huge for me. Before this one I did some internal presentations and worked as APEX trainer from time to time, but this was a first one on international conference. The amount of stress was far above my normal limits! :) But. It's all worth it! The venue was great! The organization was great! The people were great! We all know that going to conferences take time and money, but going there will give you more. You can gain some knowledge from presentations. You can talk with others about same problems you had. And ask some valuable questions to Oracle developers who are responsible for things you work with (eg. APEX or SQL Developer). This is huge! Above that there is this nice community where you can feel like one of this big herd of nerds like you ;) You'll feel great as you can finally talk with someone that understands your "IT" talks and will actually response

New plugins to store files outside your database!

The plugins we release helps you easly upload files to Amazon AWS S3. Below we have simple installation tutorial and for more you can always visit our DEMO application. Actually, this plugin is in 2 parts: - "FMcomponent" part is APEX item. Something like native filebrowser item but fully configurable. You can always customize how it with a sparkle of CSS. - "FMproviders" part serves as connection to one of the file storage service (eg. Amazon S3, Dropbox, etc) To use it, you have to grand DBMS_CRYPTO privilege to your Oracle schema: grant execute on sys.dbms_crypto to <schema>; Next, install both plugins into your APEX application: FMcomponent and specific FMprovider (currently we provide AWS S3 FMprovider). At the end you have to install additional  package . As a schema owner open your favorite SQL editor and run as first apexutil_fm_aws.pls and second apexutil_fm_aws.plb. Now you can try to add plugins in your application. Go to Apex Ap

Make your Automatic Time Zone pretty

While the automatic time zone works, it looks bad. Often when the main page is heavy user needs to look on the white page for a while. APEX doesn't let you change this page natively. I have a nice MIP (Make It Pretty) for you. Check the results: Try our sandbox demo to see the result! Steps to implement the solution: 1) In "Application -> Shared Components -> Application Processes" create a process "On Load: Before Header" with this PL/SQL: declare v_timezone varchar2(4000) := apex_util.get_session_time_zone(); begin -- if no timezone then go to error message if( v_timezone is null ) then raise_application_error(-20001, 'Get timezone'); end if; end; 2) Add this HTML to "Process Error Message" <!-- All we do is in this container will be moved at the top of the page when page loads --> <div id="timezone-window-div"> <!-- I would suggest using JQUERY stored on your side, not from googl

TWO-Factor Authentication with APEX application.

Two-factor authentication means that you must have two factors, to access your account. The first factor is something you know, like your login and password combination. The second is something you have, like a mobile device with a security app installed. That second factor — the mobile device with a security app — adds an extra layer of protection to your account. Even if hackers steal your password, they can’t log in, because they don't have your mobile device. Try 2FA on our SANDBOX environment! It is the most popular 2FA option based on Times-based One-Time Password (TOTP) alghoritm described in RFC 6238 and RFC 4226. TOTP is supported by Google Authenticator, Microsoft Authenticator, Authy 2-Factor Authentication and many other mobile apps. The most popular online services like Facebook, Google, Twitter use TOTP to protect user's accounts. TOTP is a standard algorithm based on cryptographic hash method SHA-1. SHA-1 algorithm's implementation is available sin


About 10 years ago I tried to build APEX application on MS SQLServer. It was possible but performance was not satisfactory. (You can read this post here) ... Today I will describe how to use APEX with MySQL. Obviusly I don't think it is good idea to build APEX app only on MySQL. It can be used as part of Hybryd solution (Oracle + MySQL or Postrgres). My description covers integration with MySQL. As a result will be APEX application with Interactive Report and CRUD form based on MySQL data. Description contains two parts: First part is a MySQL site, Second part is a APEX application part Prerequisites: Oracle 11g+ APEX 18.1+ MySQL/Postgres RestSQL I. MySQL Part 1. MySQL contains simple  apexdb database with one apexutil table. 2. To use this database install RestSQL. What is RestSQL? RestSQL is an open-source, ultra-lightweight data access layer for HTTP clients. RestSQL is a persistence framework or engine in the middle tier of a classic three tier archi