Acrobat Batch Plug-in and accessing user input parameters

I have written a plug-in for acrobat 9 and need to retreive the value stored in the "select output location" field from the default "edit batch sequence" dialog.
How can I get a handle to the "edit batch sequence" dialog and the dialog's user input fields and their respective values?

I don't know if this will help you out, but remember that a batch sequence (.sequ) is finally just a plain-text file.
If you know the name of the batch and the location of the sequences folder, you can probably write a small tool to read it in, parse it and figure out the output folder yourself.
For example, here's a very basic batch sequence I've created. It just calls a JS method on each file:
<</Commands [/c <<    /0 [/c <<        /Config [/c <<            /UIPolicy [/i 3]
>>]
        /HandlerName [/a /JavaScript]
        /Params [/c <<            /ScriptCode [/t (collectFilePaths\(this\);)]
            /ScriptName [/t ()]
>>]
        /Title [/t (Execute JavaScript)]
>>]
>>]
/Input [/c <<    /FileVariation [/i 1]
    /PreselectedFolderPath [/c <<        /DI [/s (/C/Batch In)]
        /DIText [/t (/C/Batch In)]
        /FS [/a /DOS]
>>]
    /SourceFileOptions [/c <<        /Formats [/c <<>>]
>>]
>>]
/Output [/c <<    /AddToBaseName [/b false]
    /DontOverwrite [/b false]
    /FileVariation [/i 2]
    /InsertAfterBaseName [/t ()]
    /InsertBeforeBaseName [/t ()]
    /OptimizePDF [/b true]
    /PreselectedFolderPath [/c <<        /DI [/s (/C/Batch Out)]
        /DIText [/t (/C/Batch Out)]
        /FS [/a /DOS]
>>]
    /PresetName [/t (Standard)]
    /RunPDFOptimizer [/b false]
>>]
>>
The input and output folders ("C:\Batch In" and "C:\Batch Out\") are plainly visible in the code.

Similar Messages

  • ANN: 1/2-hr webinar (free), June 5 -- Enable and encourage user input in PDFs (viewed with Adobe Rea

    Enable and encourage user input in PDFs (viewed with Adobe Reader)
    with FrameMaker-to-Acrobat TimeSavers + Form Assistant
    Half-hour webinar (free; no fluff, no hype, no nonsense)
    Wednesday, June 5, starting 9am PDT
    Register at: https://www3.gotomeeting.com/register/157658438
    Enabling PDFs for various types of user input can strengthen the interaction between users and the content, and improve satisfaction due to greater user involvement/control. In addition, designated avenues for user input can contribute to documentation quality and provide outlet for frustration, for example by sending inputs regarding the documentation or the product directly from within the PDF.
    Techniques demonstrated in this webinar include features that are all embedded in PDFs that are viewed with the free Adobe Reader:
    • text fields where users can record data values and options
    • checkboxes to track progress
    • page marks and notes (optionally e-mailed)
    • embedded grading/feedback forms
    • storing of useful search queries within the PDF for future use
    Shlomo Perets
    MicroType, http://www.microtype.com
    FrameMaker/Acrobat/Captivate training & consulting • FM-to-Acrobat TimeSavers/Assistants

    https://crash-stats.mozilla.com/report/index/bp-0a0b872f-5127-4ee1-a355-ca3cb2120721
    https://crash-stats.mozilla.com/report/index/bp-9cd87dd7-205f-4844-9e6d-3ce262120721
    https://crash-stats.mozilla.com/report/index/bp-8c07c846-b2ed-4535-8db4-4ee072120720
    https://crash-stats.mozilla.com/report/index/bp-f29a89ed-f8b1-4a62-ba3e-983e22120720
    https://crash-stats.mozilla.com/report/index/bp-e16d2b91-0f7d-4e5a-9e25-255852120718
    https://crash-stats.mozilla.com/report/index/bp-1226c709-5f87-41c6-95d3-4310d2120718
    https://crash-stats.mozilla.com/report/index/bp-4de2a0da-dd36-4ec8-8e53-c42742120714
    https://crash-stats.mozilla.com/report/index/bp-e16d2b91-0f7d-4e5a-9e25-255852120718
    https://crash-stats.mozilla.com/report/index/bp-4de2a0da-dd36-4ec8-8e53-c42742120714
    https://crash-stats.mozilla.com/report/index/bp-eac1c5a5-2dce-4415-b645-07a1f2120714
    https://crash-stats.mozilla.com/report/index/bp-1ede5bd3-8c72-4362-8d79-4f29c2120714
    https://crash-stats.mozilla.com/report/index/bp-d4fd5dae-dacd-45f8-9549-2c3702120722
    https://crash-stats.mozilla.com/report/index/bp-ca510991-de29-44b3-be02-0255a2120722
    https://crash-stats.mozilla.com/report/index/bp-8600c221-3fd3-4eaa-a5af-a602b2120722
    With Hardware Accelaration in Flash turned off. Still crashing.

  • Calling report from a form with user input parameters

    Hello,
    I am new to Oracle reports. I have an application coded in 6i. I am currently running the application in Oracle Forms Builder 9i. There are also few reports which are called from the forms. Since the application was developed in 6i, the report was called using Run_Product. The forms pass a set of user parameters to the report using the parameter list pl_id. The syntax used was Run_Product(REPORTS, 'D:\Report\sales.rdf', SYNCHRONOUS, RUNTIME,FILESYSTEM, pl_id, NULL);
    I learnt that the Run_product doesnt work in 9i and we need to use run_report_object. I have changed the code to use run_report_object and using web.show_document () i am able to run the report from the form. There are 2 parameters that need to be passed from forms to reports. The parameters are from_date and to_date which the user will be prompted to enter on running the form. In the report, the initial values for these parametes are defined. So, the report runs fine for the initial value always. But when i try to change the user inputs for the form_date and to_date, the report output doesnt seem to take the new values, instead the old report with the initial values(defined in the report) runs again.
    Can someone give me the code to pass the user defined parameters to the report from the forms? I have defined a report object in the forms node as REPTEST and defined a parameter list pl_id and added form_date and to_date to pl_id and used the following coding:
    vrepid := FIND_REPORT_OBJECT ('REPTEST');
    vrep := RUN_REPORT_OBJECT (vrepid,pl_id);
    But this doesnt work.
    Also, Should the parameters defined in the forms and reports have the same name?

    Thanks for the quick response Denis.
    I had referred to the document link before and tried using the RUN_REPORT_OBJECT_PROC procedure and ENCODE functions as given in the doc and added the following SET_REPORT_OBJECT_PROPERTY in the RUN_REPORT_OBJECT_PROC :
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,' FROM_DATE='||:BLK_INPUT.FROM_DATE||' TO_DATE='||:BLK_INPUT.TO_DATE||' paramform=no');
    But this also dint work. Please help me understand what difference does setting paramform=no OR paramform=yes make?
    In the report, i have defined the user parameters as FROM_DATE and TO_DATE respectively so that they match the form datablock BLK_INPUT items FROM_DATE and TO_DATE.
    My WHEN_BUTTON_PRESSED trigger is as below:
    DECLARE
    report_id report_object;
    vrep VARCHAR2 (100);
    v_show_document VARCHAR2 (2000) := '/reports/rwservlet?';
    v_connect VARCHAR2 (30) := '&userid=scott/tiger@oracle';
    v_report_server VARCHAR2 (30) := 'repserver90';
    BEGIN
    report_id:= find_report_object('REPTEST');
    -- Call the generic PL/SQL procedure to run the Reports
    RUN_REPORT_OBJECT_PROC( report_id,'repserver90','PDF',CACHE,'D:\Report\sales.rdf','paramform=no','/reports/rwservlet');
    END;
    ... and the SET_REPORT_OBJECT_PROPERTY code in the RUN_REPORT_OBJECT_PROC procedure is as:
    PROCEDURE RUN_REPORT_OBJECT_PROC(
    report_id REPORT_OBJECT,
    report_server_name VARCHAR2,
    report_format VARCHAR2,
    report_destype_name NUMBER,
    report_file_name VARCHAR2,
    report_otherparam VARCHAR2,
    reports_servlet VARCHAR2) IS
    report_message VARCHAR2(100) :='';
    rep_status VARCHAR2(100) :='';
    vjob_id VARCHAR2(4000) :='';
    hidden_action VARCHAR2(2000) :='';
    v_report_other VARCHAR2(4000) :='';
    i number (5);
    c char;
    c_old char;
    c_new char;
    BEGIN
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,SYNCHRONOUS);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_FILENAME,report_file_name);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,report_server_name);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,report_destype_name);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESFORMAT,report_format);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,' FROM_DATE='||:BLK_INPUT.FROM_DATE||' TO_DATE='||:BLK_INPUT.TO_DATE||' paramform=no');
    hidden_action := hidden_action ||'&report='||GET_REPORT_OBJECT_PROPERTY(report_id,REPORT_FILENAME);
    hidden_action := hidden_action||'&destype='||GET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE);
    hidden_action := hidden_action||'&desformat='||GET_REPORT_OBJECT_PROPERTY (report_id,REPORT_DESFORMAT);
    hidden_action := hidden_action ||'&userid='||get_application_property(username)||'/'||get_application_property(password)||'@'||get_application_property(connect_string);
    c_old :='@';
    FOR i IN 1..LENGTH(report_otherparam) LOOP
    c_new:= substr(report_otherparam,i,1);
    IF (c_new =' ') THEN
    c:='&';
    ELSE
    c:= c_new;
    END IF;
    -- eliminate multiple blanks
    IF (c_old =' ' and c_new = ' ') THEN
    null;
    ELSE
    v_report_other := v_report_other||c;
    END IF;
    c_old := c_new;
    END LOOP;
    hidden_action := hidden_action ||'&'|| v_report_other;
    hidden_action := reports_servlet||'?_hidden_server='||report_server_name|| encode(hidden_action);
    SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'pfaction='||hidden_action||' '||report_otherparam);
    -- run Reports
    report_message := run_report_object(report_id);
    rep_status := report_object_status(report_message);
    IF rep_status='FINISHED' THEN
    vjob_id :=substr(report_message,length(report_server_name)+2,length(report_message));
    message('job id is'||vjob_id);pause;
    WEB.SHOW_DOCUMENT(reports_servlet||'/getjobid'||vjob_id||'?server='||report_server_name,' _blank');
    ELSE
    --handle errors
    null;
    END IF;
    In the code - " hidden_action := hidden_action ||'&'|| v_report_other; " in the RUN_REPORT_OBJECT_PROC procedure above, how do i make sure that the v_report_other variable reflects the user input parameters FROM_DATE and TO_DATE ??? v_report_other is initialised as v_report_other VARCHAR2(4000) :=''; in the procedure. Will ensuring that the v_report_other contains the user input parameters FROM_DATE and TO_DATE ensure that my report will run fine for the input parameters?
    Thanks in advance.
    Edited by: user10713842 on Apr 7, 2009 6:05 AM

  • Cannot load Java plug-in and access R12 Oracle form from client

    Hi, one of my user cannot open Oracle form when accessing R12 environment using IE6. After selecting responsibility and menu, it got stuck after 50% processing when trying to load Java applet. It never got completed even after waiting for 2-3 hours.
    Is there any browser setting that needs to be modified? I checked popup blocker and activeX setting. All seem to be in order. Kindly assist. Thanks.

    Hi,
    What is the difference between this client and other clients?
    Delete the browser cache/history files and check then. If this does not help, enable trace for JRE (as per Note: 549423.1 - How to enable tracing and logging for Sun JRE (Native Plug-in)) and see if it shows any errors when you encounter this issue.
    Regards,
    Hussein

  • Capturing and displaying user input in Crystal Reports

    Hi all,
    Iu2019m creating a crystal report with SAP as data-source and want to capture user input and display it on the report.  I have defined parameters to capture the input and added them to the report header.   I have then created formula fields to capture user input using the JOIN statement to accommodate multiple values.   Everything works well when users enter values for all the parameters, but when they leave some blank I get an error message u201CParameter value is nullu201D.
    Has anyone encountered this type of problem;  Anyone knows how to resolve this?

    Hi
    In parameter window make the Optional prompt to True.  And change make change in your record selection formula like this :
    (not HasValue({?PrjMgr@SELECT Firstname,lastname FROM OHEM}) OR
    ISNULL({?PrjMgr@SELECT Firstname,lastname FROM OHEM}) OR
    ({?PrjMgr@SELECT Firstname,lastname FROM OHEM} = '') OR
    {OHEM.firstName} = {?PrjMgr@SELECT Firstname,lastname FROM OHEM})
    Regards

  • Search for recordsgreater than 45 days and between user input fields

    Hi,
    How can I query where the
    Status id '3' greater than 45 days from the setup_date. (which is the sysdate)
    select ppcontract from proj_track where status_id = '3' and SETUP_DATE >= ADD_months (sysdate, +1.5)
    Also, How can I put a search criteria to the query which selects the creation_date between the beginning date (user input field) and the end date (user input field)
    I guess it would be like this, but it doesn’t work
    and creation_date between :p12_start and :p12_end
    Thank you in advance. Rav
    Message was edited by:
    user486969

    Try out this.
    Where START_DATE = Trunc(Sysdate) - 45
    Assuming both input fields are text/varchar2 type,
    DT Between To_Date(BEGIN_DT,'MM-DD-YYYY) And To_Date(END_DT,'MM-DD-YYYY)

  • Generating DDL to accept user input parameters

    I need generate DDL which will accept input parameters from user, for example, tablespace name for indexes. What is the best way to do it?
    At present, I’ve created tablespace with name ‘&INDEX_TS’ in physical model and using it to create indexes. Is this a correct way to do it?
    Also, &INDEX_TS appears within double quotes in generated DDL. Is there a way to get rid of double quotes?
    I'm using v3.1

    Hi,
    I have just found out that there is a "substitution variable" facility within SQL*Plus and SQL Developer which allows runtime substitution when applying DDL.
    Here are some extracts from the SQL Developer Help:
    Script Runner
    The SQL*Plus features available in the script runner include @, @@, CONNECT, EXIT, QUIT, UNDEFINE, WHENEVER, and substitution variables. For example, to run a script named c:\myscripts\mytest.sql, type @c:\myscripts\mytest in the Enter SQL Statement box, and click the drop-down next to the Execute Statement icon and select Run Script.
    The following considerations apply to using the SQL Developer script runner:
    For substitution variables, the syntax &&variable assigns a permanent variable value, and the syntax &variable assigns a temporary (not stored) variable value.
    So if the name starts with &&, it will only prompt for the actual name the first time it appears.
    Note that this still works if the name is presented as a quoted identifier, e.g.
    TABLESPACE "&&INDEX_TS"
    David

  • Create an API to Launch an LabVIEW Built Executable and Pass it Input Parameters

    Hello,
    I'm looking for a way to create an API to Launch/Close an executable, created with LabVIEW, which in additional to Launching/Closing tht executable, will also allow me to pass input parameters.
    To give you some background, I'm working on a logging utility, basically a background dameon, which I currently have implemented as a LabVIEW packed library and my API is a few VIs to launch that daemon and pass it a filename and a logging rate.  Functionally it works just fine however is executes within LabVIEW not as an independent process.  So instead of using a packed library, I would like to compile my logging daemon down to an executable but I still need a way to launch it and pass it parameters from an external application (such as Teststand).
    I know you can launch executables and pass parameters using windows command lines, but I'm wondering if there is a more direct method such as a DLL that I could call in Teststand?  Thanks.
    Post CLD and when I'm a CLA when someone asks who I am, I can spin around in my chair and say "I am... the architect."

    When Teststand Launches the Logger, it does so by opening a reference to the logger daemon using the "Open VI Reference" primitive and then it launches an instance of the dameon using the "Start Asynchronous Call" node.
    This currently, launches the logger within labview not teststand.  If I were to directly call the logger daemon VI itself as a step in TestStand, then it could run in a new teststand thread.  At that point I would need a way to stop that logger which I should be able to do by storing a reference to its control queue within the teststand thread that it is running in.  Since teststand let's you specify VI execution in the runtime engine instead of LabVIEW that might do the job.
    The one catch is once the sequence completes, the logger does some cleanup, post processing, etc that depending on the amount of data captured can take some time so if a set of sequences needs to be executed, this could hang up teststand until that post processing is completed.  That is one reason why I wanted it to execute outside of testtand so that additonal sequences could continue to run while the daemon finishes up in the background.
    But, it's something I'll have to look into.
    Post CLD and when I'm a CLA when someone asks who I am, I can spin around in my chair and say "I am... the architect."

  • Speech recognition and manual user input

    I  have a main GUI VI that contains two listboxes.  Both listboxes are selectable by the user.  Here is how I want them to interact.
    When the VI is initialized, the first listbox will be filled with string phrases.  If the user double clicks a cell in the first listbox, the second listbox will be populated by sorting the string phrases from the first listbox to only include phrases starting with same first letter.  Next, I want the user to be able to double click one of the phrases in the second listbox or 'say' the phrase into a microphone for speech recognition.  The phrase that is double clicked in the second listbox or identified through speech recognized will then be displayed on the main GUI VI.
    I've got my main GUI VI working such that the first listbox will populate the second listbox after the user double clicks a cell in the first listbox.  I've also got it working such that I'm able to double click the second listbox and display the phrase.  I'm using an event structure to do this thanks to some previous help from Dennis shown here.  I've also got a decent VI working based on this example that will recognize a phrase spoken based on an array of possible input phrases (grammar builder).  So I've got the pieces working independently of each other...
    My question is how to have both the speech recognition listening and second listbox waiting for a double click for input at the same time?  I have an event structure that waits for a double click to determine which phrase from the second listbox goes in the displayed phrase, I get that part, but how to use an event structure for speech recognition too?  Do I need a button to click to start the speech recognition VI?  I don't think I want the speech recognition VI running in the background just listening in some endless loop do I?
    Thanks,
    Mike

    Hi,
    It is a bit unclear what you are actually after.  Yes you could use the speach recognition in a seperate loop running as a daemon / callback or something but what is to stop you coding both bits of code in the same event structure.  You could do these in serial / parrallell just by the way you code them using dataflow.  It definitiely shouldnt be block diagram space as you can always create sub vi's.  You can deal with one of the events then create a user defined event to deal with the next process immediately after the first.
    So to  re-iterate, i am unsure as to what exactly you are after but i gave you my best guess
    Craig
    Message Edited by craigc on 26--01-2010 07:56 AM
    LabVIEW 2012

  • Editing with a DataGrid and validating user input

    Editing
    with a DataGrid Tutorial
    How to edit the information in a Flex 2 DataGrid directly,
    without data binding TextInputs to it.
    Uses a Remote Object, a CFC, and a Microsoft Access database
    to demonstrate how.
    Uses Actionscript to validate the data the user types into
    the DataGrid.

    We created an itemEditor for our dataColumn that was a
    mx:TextInput. Then we used the textInput event to capture keys as
    they are typed. You get a TextEvent from that which you can cancel
    if it something you don't want the user entering. We used regexs
    for are validation here. I'm not sure if this is the best way to
    handle this sort of thing, but it worked.

  • Flash Wrapper and Accessing user-defined variables

    I am working on creating a Flash AS3 wrapper to combine several cpativate files.  I am able to retrieve system variables, however I am not able to retrieve user-defined variables.  I have a user defined variable in my Captivate called passedScore, in my Flash script I have the following...
    var mcLesson1:MovieClip;
    btnHit.addEventListener(MouseEvent.CLICK, test);
    var vLoader:Loader = new Loader();
    vLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
    vLoader.load(new URLRequest("untitled1.swf"));
    function swfLoaded(e:Event):void {
    mcLesson1 = MovieClip(vLoader.contentLoaderInfo.content);
    vLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, swfLoaded);
    addChild(mcLesson1);
    function test(event:MouseEvent):void
              feedback1.text = mcLesson1.cpInfoCourseName;
              feedback2.text = mcLesson1.m_VarHandle.passedScore;
    feedback1 correctly shows the course name, however, for feedback2 it errors saying a term is undefined (refering to m_VarHandle)

    try using mcLesson1.cpEIGetValue('m_VarHandle.passedScore');

  • Mouse response and other user inputs are very slow

    Installed the new Flash player on IE8. When playing Farmville on facebook, there is a 2 to 5 second delay between moving my mouse and the cursor responding to the movement. Similar lag for mouse clicks. Connection is high-speed cable. There is no response problem using my other computer with an older Flash player.

    AIM is wayyy outdated for macs....the best alternitive is either AdiumX or ichat....adium doesn't have webcam option but its very customizeable

  • WADL generator and $ signs for input parameters

    Hi,
    I'm using the WADL generator for my REST services, but my parameters require a '$' in front of them, for example $format=json.
    But the WADL generator gives me an error = 'Id must contain only letters with no spaces'.  I wouldn't mind it if I could just change the parameter in order to generate the WADL and then adjust the WADL with the '$'s I would need, but it won't progress
    to the generation of the WADL without the URL working......which it can't without the '$' for my parameters.
    Any way of getting around this?
    Cheers,
    JB

    Hi JB,
    This is a known issue with the WADL gen tool which we plan to address in a future release.
    In the meantime, you can add your parameter (omitting the '$' sign) and instead of hitting "Try It" to get the tool to download the json string on your behalf, you can manually paste the json response into the text box - this will generate the
    correct WADL grammar for the WADL file which you then could add the '$' once the WADL is generated.
    Thanks!
    Justin

  • Accepting user input and executing a PL/SQL block using it

    Hi All,
    I am working on a requirement wherein I have to accept values from the user for the various arguments to be supplied to a PL/SQL block and then execute it using these values. For now, I am using the following logic:
    PROMPT Enter value for the Category
    ACCEPT cCategory CHAR PROMPT 'Category:'
    DECLARE
    cCategry CHAR(1) := '&cCategory';
    BEGIN
    DBMS_OUTPUT.PUT_LINE('The value of the Category as entered by you is' || cCategory);
    END;
    PROMPT Press y if you want to proceed with the current values, or press n if you want to re-enter the values
    ACCEPT cChoice CHAR Prompt 'Enter y or n:'
    DECLARE
    cCategry CHAR(1) := '&cCategory';
    sErrorCd VARCHAR2(256);
    sErrorDsc VARCHAR2(256);
    BEGIN
    IF '&cChoice' = 'y'
    THEN
    DBMS_OUTPUT.PUT_LINE('Starting with the process to execute the stored proc');
    --- schema1.package1.sp1(cCategry, sErrorCd, sErrorDsc);
    --- DBMS_OUTPUT.PUT_LINE('Error Code :' || sErrorCd);
    --- DBMS_OUTPUT.PUT_LINE(' Error Description :' || sErrorDsc);
    ELSIF '&cChoice' = 'n'
    THEN
    Now I want that the proc again start executing in the loop from the 1st line i.e. PROMPT Enter value for the Category. However i see that this is not possible to do that PROMPT statements and accepting user inputs execute only on the SQL prompt and not inside a PL/SQL block.
    Is there an alternate method to establish this?
    Thanks in advance.

    Hi,
    You can write a genric procedure to achive the desired output. Pass 'Y' or 'N' in the procedure.
    Call that procedure in simple pl/sql block during runtime using substituton operator.
    For ex
    create or replace procedure p1(category_in in varchar2)
    IS
    BEGIN
    if (category_in='Y')
    then
    prcdr1()
    /** Write your logic here ***/
    elsif(category_in='N') then
    prcdr2()
    /** write your logic here***/
    end if;
    exception
    /***write the exception logic ***/
    end p1;
    Begin
    p1('&cat');
    end;Regards,
    Achyut K
    Edited by: Achyut K on Aug 6, 2010 5:20 AM

  • Taking user input in a PL/SQL block

    Can someone tell me if it is possible to to take user input from within a PL/SQL loop? I mean I want that for each iteration in the loop, the program first take user input, and then based on that input, it perform specific operations. Then it repeats this process for each subsequent iteration of loop.
    If it is not possible in PL/SQL, is there any other alternative?
    Thanks.

    > I'm afraid I have no idea how to get the server to ask questions of the user,
    especially when it essentially operates in a kind of batch mode.
    Yep. To expand a tad on what Hans mentioned here.
    To accept input, the process needs to be able to read from this input device. Let's make it a keyboard. The PL/SQL process needs to read keyboard input.
    The keyboard is attached to a PC 1000km away in a branch office. The Oracle server process, running on a server in the data centre, executes this PL/SQL code.
    So now this PL/SQL process has to automagically hack its way across the network. It needs to remove the keyboard plug from that client PC. It somehow must get that keyboard rewired, across that 1000km, into the server platform at the data centre. And only then can the Oracle server process running that PL/SQL code read from that keyboard input device and accept user input.
    It is important, when developing in Oracle, to grasp just what client-server is and how it works. And not to confuse something like a SQL*Plus Client Process (submitting PL/SQL code) with the Oracle Server Process (parsing and executing that submitted PL/SQL code).

Maybe you are looking for