Thanks for the question, Peter.
Asked: February 05, 2026 - 8:32 am UTC
Last updated: February 26, 2026 - 5:58 am UTC
Version: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.27.0.0.0
Viewed 100+ times
You Asked
Hi Tom,
I got a Web Form that is able to display data to users and read user input back into the database. It is very important to be able to read user input back into the database. This is why I did not use out-of-the-box solutions like "owa_utils.read SQL into table". However, I need a ton of parameters to work with, and as the project grows, I would like to modularize and carry fewer parameters between the procedures. ChatGPT told me that context variables would be nice, and I could read them via owa_utils. However, I did not get this running. Do you have any solution that allows me to modularize and clean my code?
Within the FreeSQL link, there is a smaller example of what I am currently doing. This code works in my schema to run a page that is hosted on my server, except for the page link. I only need to replace the g_page_link with my actual server and schema names, and the code will work on my schema. Unfortunately, I do not know how to generalize this Pagelinke with FreeSQL. I also do not know a server that I could call from there.
To make that clear again: I need help with managing user input, the moment I split my current procedure into a lot of smaller procedures. I would like to avoid passing 20+ in-out parameters between multiple procedures. Can you help me?
Best, Peter
with LiveSQL Test Case:
https://freesql.com/?compressed_code=H4sIAAAAAAAACu1YXW%252BiShi%252B91e8mexZNKdbtT1XK5BQHCtZCnYYz7ZXBGW2kii4MOzZnvjjTwYUVBR10016cbgBZt6PZ97PmdEJ1igGmwDBI1PTMYw0%252FYt2j4Fih7qbH81pAADQ5xEG6mqEgJGPZKPanYnBHsDfGtGHGrlpdjudFhhWHz%252FB3TPcGZZGnl3Dovgek17GNyK2jvtjUui5x9AsJI5cfWgbOhbfhlXIhT4eaGOTgjU2zast6rGDiWtpD%252FgMas01%252Bptvw1qvZkOqaw6FZsYBmrOebG0z67Zpj8kvMhONGtb9BcwZb6vXaGCrv%252BORXqPdaOhHnXdn958rHsyE3We2dk3D%252BlL660b4a4NEWry6ScBZW7ynM7bw2hKsVmDaXzFpfvgwMp1H0x1bBhXA%252Fnfmhc4sPCEeggd6DgDAeXbc%252FN%252Bx11kiHtN1KHEeTfFdOOyvTqfT2qbRLVqYgZYT%252BpgUFiqYb7dZBcXGDFsUG5I7fG9YBfGQjq6H9MG0R9jq7Y5irV8dpQY1cVOiLOGw9F6Y1Kpy6abt4N1hEb1VYSNiWLQpybMuePPgJVTQlIWcxUgt5MvtWVfdVmIMyvAznNwhdIjLFe0L%252FxbFC%252FCmPIhC5eP3NOI9aYe2fFarnVxarUC65izhrgCSswIsGJ9FvoKWUcLRDrJ9xX7wo3aee5M5q6eIVZD5DKbRPFl6oYJukDoI5pzFcpvPVLnN4zP4fXWcZBy%252BWrNySRCCnLA5m3IIvQVT0NJNExa74gdBEvzLFNRFKkCtmGgpTA0%252FvHnKFDRimT%252Bzl9zO5%252BphrPlzIMzfCKLRAqk0WpRCcnKxrMIQdZaQub9jSHmSch6FwF%252BXTEFJOlkEHBULn86iYMrQRnvscYZUGCcMcgeA3M75VdiFcAxB%252B7S726cipi1ieYdCNBFjsLXw7fRQQBK4pXeaH0G4TPna%252FLPA91mIDsVd7oGTyLa7jECWM5yRgDKfMc9X5VO5NIPAV9A0miNVj%252BZRmufgGSyxx5FKPB6ELydZRBQJohzRJPJfK%252BRF9%252FisHE1EWKcPdMFLIPCvQJIm85RJkvifZvDhWxwtwE%252B9%252BVEh4klDkY3e%252FDjVWtVNqSpm%252Fu%252FUdFtqeokZCw%252FrkvbNJhrqZwU6u%252BOiK22a9sAmhXn3iolp26MKrgGm%252BnDDbFjUPog879hXR%252BfyXt2rzOMng8LXYQHvD8umA3ts9SuUGWyxPFWBbqfTqcoqVp9%252F%252FAndKs15uem5gV%252BUxePxl%252BXkeq8i0rFaCi5Rmfv2ErXrDdB5qkXq14sU3RG8n0GioCThcRC%252BIBBJyuIkrwlwSkIJ6pSmukZdhROmiwmLEZRwsnqzY07OfvLSmHFWis41ZucEEqTmgDfYDzRi0aRE%252FuwNZ9vEdWzXVcSsCp7RP0FeqnBRV%252FejkGWlmUEY%252FVO2dLm9fOM%252BLDS91z78G%252Fapt0glLEnn%252FBf3qeLvVHzu9vyaHSWq22%252FubxsK9Sp8DCfJsrceOBjYol8Y4qwoDq3XA4M49Po6%252BzbFcfFgzziw7jMzUQhuGq2T%252BfgmYvJN7QXY8tr2JvjOFXV2qBSS8wP%252Bm4AsRG1DEVEC%252B5F%252BpPy95fEEqTAIwiCZQV7c3%252BvpZHMVcOCGQFxCbA3jJx2PqGGX9TLbCdl0iIlTX0irtwk4jqO4cpOwz7fcZ6s75zqPJibkYe38sl1gq3%252F4bu%252FTJ2zr%252FwGak8fWnBUAAA%253D%253D&code_language=PL_SQL&db_version=23&code_format=false
and Connor said...
Thanks for the test case - I got it running under my local ORDS after a bit of tinkering.
I'm not entirely sure what you are trying to achieve (or what the obstacles are).
But fundamentally - from I can see from your sample code - this is a requirement screaming out for APEX. Its going to manage all of the Form processing, database processing etc.
I can't think of a reason why you'd want to home-grow this in mod_plsql.
Can you elaborate further via comment?