Show "busy" icon while DA is working?
You could probably do a whole presentation on this by itself.
The "correct" answer "depends" on the situation.
- Long running jobs should be done via Submit and use DBMS_SCHEDULER and/or Advance Queuing for job tracking.
- Short running jobs: Use a DA plus plugin.
There are variations for "in between" conditions.
That suggestion really has got me thinking, cheers Mike.
Come people, don't be shy ;p
Handling Identity Columns
Due to how "Automatic DML" works, the Identity column needs to be GENERATE BY DEFAULT ON NULLS AS IDENTITY.
From there, just choose "Pre-Existing Trigger" when creating "Form on Table [with report]".
A quick slide that shows that "Identity Columns" work faster than triggers might be beneficial. (They are still based on a Sequence).
The proper care and feeding of this.triggeringElement
- How do I do X? The answer to which is always either "Why?", "It depends", or "Use a custom named column report template". The latter can be used to do anything (except format tabular forms).
- There is a client and a server, and they use different technologies.
- Session state is stringly typed, leading to confusion, performance problems, and religious war. NLS_APP_*_FORMAT substitution strings now help to mitigate the latter, but many developers don't understand how to write predicates using explicit conversions to produce efficient queries.
Using Shuttle Values in a Search Query
I would also start off the discussion of this solution with "it depends".
This is nothing more than a variation of the "Varying IN List" problem.
I usually reference this:: The Tom Kyte Blog: Varying in lists...
It goes through and explains why you can't do this
WHERE x_id IN ( :P55_SHUTTLE_VALUES )
This blog provides two solutions to the "Varying IN List" problem.
Another solution is to statically set the number of BIND variable that are used in the IN () clause.
WHERE x_id IN ( :P35_LOV_1, :P35_LOV_2, :P35_LOV_3, :P35_LOV_4, :P35_LOV_5 )
One of the most preferable solutions is to use the INSTR() method
-- for APEX Shuttle Lists WHERE INSTR( :P55_SHUTTLE_VALUES, ':' || x_id || ':') > 0
This works well for most APEX requirements.
On the extreme end, the number of selected values will cause a slow-down .... if you can even use that many values.
(eg static BIND method is limited by the maximum number of values for the IN clause)
At that point, you need a different method.
That different method means:
Place those values into a table (eg APEX Collection)
Modify the SELECT statement to JOIN against that table.
Which comes to mind
Why can't I use a Global Temporary Table with APEX?
For intra-page processes, you can use a Transaction level GTT (data disappears at end of commit/rollback ie APEX Processes)
For inter-page processes, you need to use a Collection
Just discuss about "shared connections", and what happens in each case.
I wanted to come up with varying in lists as well. I think here should be also mentioned what offers the new apex_string package.
declare l_in_clause varchar2(100) := 'KING:BLAKE'; --:px_shuttle / :px_checkbox value begin for r_emp in (select empno , ename from emp where ename in(select * from table(apex_string.split(l_in_clause,':')))) loop dbms_output.put_line(r_emp.empno || ' ' || r_emp.ename); end loop; end;
7839 KING 7698 BLAKE Statement processed.