Skip to main content

Posts

Showing posts from October, 2024

Match authorization schemes on pages with navigation

T Today, I will show you how to easily check if your authorization schemes set on pages match the schemes set in the navigation. In my custom navigation (including the multicolumn navigation ), I don't have to set it in two places (which is never a good idea). My navigation gets the schemes from the pages. But the default APEX navigation is not like that. That causes a lot of confusion to users when they see a page in navigation, but can't access it. Or when they have some hidden pages, and they are missing the navigation links. Fortunately, if you combine few APEX views, you can find out: SELECT p.application_id, e.list_name, p.page_id, p.page_name, --p.page_alias, --p.page_group, --p.page_mode, p.authorization_scheme AS auth_scheme_page, e.authorization_scheme AS auth_scheme_nav, e.entry_text, e.entry_target -- FROM apex_application_pages p LEFT JOIN apex_application_lists l ON l.application_id = p.application_

HrOUG conference, mini review

I I spent the past few days at the HrOUG conference in Rovinj, on the Red Island. I was there for the first time. The location was superb, but difficult to get to, at least from Prague. No direct flights, no trains, 9 hours by car... The hotel was ok, I expected it would be a bit outdated and it was not. But I was not expecting a noise till 2am. If you are not an old fart who goes to bed at 10pm like me, you probably won't bother. The food was excellent. I don't think this can be improved. The sessions. With the 5 tracks and one dedicated to Oracle APEX and the other one to Oracle AI , there was always something interesting to listen. Just check the agenda link at the top. These conferences are really a great opportunity how to stay ahead of the people who don't go there. As a speaker, you can pass your knowledge to others. Very different experience than online events. The people. Probably the best part of the whole conference. You meet a lot of cool people. A

How to debug APEX authorization schemes, #JoelKallmanDay

I I was going to write about the brand new and hot Oracle AI feature, the prebuilt OCI Generative AI agent with RAG , which I saw last week at local Oracle event at Prague. You basically get a pretrained AI agent, throw at it your files and it will be answering your questions with knowledge gained from your files. The plan was to spend some time during the weekend and play with it, but both my cloud accounts are at Frankfurt. Despite the claims of the Oracle support, you have to be in Chicago region. It is not available in other regions yet. I don't want to create another free OCI account and on free it is not possible to subscribe to another region. Today is day #5 since I am unsuccessfully upgrading my OCI to paid version (and despite having a ton of credits from the Oracle ACE program). As all of you certainly know, the Oracle support sucks. You don't have to be sad, because Adrian is the expert on this field and he wrote about this amazing feature today and with mu

Bulk expose your package constants to SQL

T Typically you have some constants in packages. And sooner or later you need to use these constants in SQL statements outside of the package, like in a view. Sadly even the latest Oracle 23ai won't help you with this. The solution is to create a function for each constant, which can be very tedious if you have many constants. I have created a generator to automate this , but here is a different approach. We have can utilize the USER_SOURCE view to get the constant value and the USER_IDENTIFIERS view to localize constants in the package. With this approach you can also expose constants from the BODY. Here is the function: CREATE OR REPLACE FUNCTION get_constant ( in_package VARCHAR2, in_name VARCHAR2, in_prefix VARCHAR2 := NULL, in_private CHAR := NULL ) RETURN VARCHAR2 RESULT_CACHE AS out_value VARCHAR2(4000); BEGIN SELECT NULLIF( REGEXP_REPLACE(