Input to PL/SQL

How to get data from OS into a PL/SQL program?
It is possible in SQL*Plus with using & sign in sql statement.
What is the related function/package in PL/SQL?
New to PL/SQL! Please help.
-Sameer

Any type of input from user like a number or string.Yes. The SQL Plus manual covers all the methods of using substitution variables and command line parameters.
Also how can I transfer my database records to a file as tab separated You can do this with SQL Plus and format the select statement however you want then spooling it to a file.
However, I think SQL Developer is much easier for this sort of thing. (one of the rare occasions where I'll use a gui tool).

Similar Messages

  • How to prompt for user input in PL/SQL

    How do I prompt for user input in PL/SQL?
    I am writing a piece of code where the user may choose, by clicking either of three buttons on an alert, to have the system assign a value to a variable, to input a value or to do neither?
    If the user chooses to input the value I want to update a set of database fields with the value.
    I have thought about showing a view where the value may be entered into a field displayed on that view. The value will be assigned to the variable by the user clicking a command button. The question I have in this case though, is whether, after the command button is clicked, control will be passed back to the code that called the view in the first place?
    Edited by: desgordon on Sep 3, 2008 10:33 AM

    desgordon wrote:
    How do I prompt for user input in PL/SQL?
    I am writing a piece of code where the user may choose, by clicking either of three buttons on an alert, to have the system assign a value to a variable, to input a value or to do neither?OK, you're doing that in Forms...
    >
    If the user chooses to input the value I want to update a set of database fields with the value.Write PL/SQL procedure for this purpose...
    >
    I have thought about showing a view where the value may be entered into a field displayed on that view. The value will be assigned to the variable by the user clicking a command button. The question I have in this case though, is whether, after the command button is clicked, control will be passed back to the code that called the view in the first place?Not clear what you mean with view?
    But if you call your procedure in that button then yes 'control will be passed back to the code'...
    Cheers!
    Edited by: Faust on Sep 3, 2008 7:57 PM
    Too slow...

  • Accepting dynamiv user input using PL/SQL

    Hi,
    I need to accept dynamic number of user input values.
    What i need is i will enter the number of employees to be created.
    If i enter 2 then i need to dynamically accept 2 employee details.
    DECLARE
       v_emp_cnt    NUMBER;
       v_emp_id     VARCHAR2 (15);
       v_emp_name   VARCHAR2 (200);
    BEGIN
       v_emp_cnt := &v_emp_cnt;
       FOR i IN 1 .. v_emp_Cnt
       LOOP
          DBMS_OUTPUT.PUT_LINE('INSIDE LOOP');
          v_emp_id := &v_emp_id;
          v_emp_desc := &v_emp_Desc;
          INSERT INTO emp_details (process_id,
                                            column11,
                                            column12,
                                            column13)
            VALUES   ('EMPLOYEES',
                      'EMP-' || i,
                      v_emp_id,
                      v_emp_desc);
       END LOOP;
    END;
    /Can anyone let me know if this is the right approach to acheive my requirement. Please suggest alternatives.
    Thanks
    Vamsi Krishna

    PL/SQL is a server-side language-- it doesn't have the ability to interact with a user. A client application such as SQL*Plus, can both prompt for input and submit SQL statements to the database. It's probably possible to hack together a SQL*Plus script that could do something like what you appear to be looking for but using SQL*Plus for this sort of thing would generally be the wrong architectural solution. You'd generally be better off with a small shell script that prompted the user for data and then called a stored procedure.
    Justin

  • [Interface] - Passing variety parameters/input to PL/SQL report

    Hi,
    I've the PL/SQL report which can allow passing in the parameter, i use '&'.
    the report is given to the end user who do not have the IDE for PL/SQL. the machanism of the report is generated into the spool file and import into excel format.
    now i am wondering how to create a tool using SQL or PL/SQL to allow the end user to choose the parameter(s) dynamically and passing into the PL/SQL to generate the report based on the input selected.
    the parameters like below:
    package code :
    week no :
    year :
    department :
    all the above parameters, the data would be selected from the existing lookup table. the user is allow to select more than 1 input for specified parameter for instance i want to spool report for week 1 until week 5.
    pls advise any solution on this topic. thanks

    hi scoot,
    thank for reply.
    yep, i'm using sql*plus and also sql navigator 4.0 .
    the user don't have the software to interact. i'm thinking of build an simple interface using VB and passing in the parameter then initiate the sql*plus to run the program in background mode.
    but if you have any other solution which not need to use other software to wirte such program , pls let me know immediately. thank

  • How to bind/pass multiple input parameters to sql query in BPEL Process

    Hi,
    I have a requirement to invoke a query on a database table to fetch the records based on the few input values or bind variables?
    I have created a Partner link using the DBAdapter service and have used custom SQL, how can i bind and pass multiple bind/input parameters for these queries.
    foreg: if i have to query employee records based on name , desgination and age, these three params would be my input parameter that i will pass when i invoke the BPEL process, bow how can i pass these parameters to the partner link using DBADAPTER service.
    Please help
    Regards

    If the parameter-value is not known beforehand and cannot be determined based on the process instance data at that time, there are 2 options. Either invoke the PL/SQL procedure you named using a DB adapter service to get the value and pass it to the other DB adapter service. Or create a single service (e.g. PL/SQL procedure) that determines the parameter value, executes the query and returns the result. However, this is more a design issue. Does it makes sense to combine these actions in a separate service and use it or are these actions not related? You furthermore state that additional (DB adapter) services make the process heavier. Do you have strict requirements on the time process-instances may run or other such requirements? If not, I think the design-choice on whether combining these actions in a single service should have more priority.

  • Use of Input Variables in SQL-Queries Sometimes Not Possible

    Only in simple SELECT-statements the use of input variables ([%0], [%1], etc.) work without problems.
    In more complex queries the use of these variables is not possible (e.g. SELECT-statements with sub-queries, sometimes when UNION is used - but I couldn't find any general rule when the problems will arise; sometimes two different queries with the same query-structure behave in different ways when these variables are used).
    In these cases the query is not executed - not even the input-window to enter values into the input variables is displayed. The query stops with some strange error-messages in the status line. These error-messages doesn't have any relation to the actual query - sometimes it refers to field-names never used in the query or refers to syntax error which do not exist.
    If the input variables are replaced by constant values there are no problems so there can't be any syntax errors - the only difference is the presence or absence of input variables.
    Example:
      provided that the queries have a certain complexity
      SELECT ...
      FROM   ... OINV Tx ...
      WHERE  ... Tx.DocDate >= [%0] ...
      does not work,
      SELECT ...
      FROM   ... OINV Tx ...
      WHERE  ... Tx.DocDate >= '1.1.2007' ...
      works!
    Does anybody have run into the same problem and now if it is a bug of SAP-BO or an error on behalf of the user? Does anybody know a way to correct the problem?
    Thanks in advance!
    Frank
    By the way: Are there any rules where exactly input variables can be used in a query?
    Only in SELECT-statements? Where there exactly?
    In statements outside of SELECT?

    Only SAP Partners Can access service.sap.com/notes, but I think it is possible to search in them from the customer portal as well.
    Here are summary of the two notes mentioned before this:
    730960:
    <i>
    The following query is an example for how to define variables in long
    queries rather than using "Fixed Declares".
    You need to use exactly the same template as follows, do not delete
    "comments" from this query.
    The only changes you need to do :
    1. In the first and in the fifth rows you need to select the table to which you would like to relate the variable e.g. in this example, the variable is related to the table VPM1 - 'Payments to Vendors - Rows'.
    2. In the fourth and in the eighth rows you need to select the field to which you would like to define the variables e.g. in this example, the variable is the field 'DueDate'.
    /SELECT FROM [dbo].[VPM1] T0/
    declare  @fromdate as datetime
    /* WHERE */
    set @fromdate = /* T0.DueDate */ '[%0]'
    /SELECT FROM [dbo].[VPM1] T1/
    declare  @tilldate as datetime
    /* WHERE */
    set @tilldate = /* T0.DueDate */ '[%1]'
    select  OVPM.docnum, VPM1.dueDate,VPM1.CheckNum, VPM1.Branch,
    VPM1.BankCode, VPM1.CheckSum, OVPM.CardName,
    case
    when OPCH.docnum is null then VPM2.docEntry
    else OPCH.docnum
    end as 'docnum'
    from OVPM INNER join VPM1 on OVPM.docnum = VPM1.docnum
    left join  VPM2 LEFT JOIN OPCH ON VPM2.DocEntry = OPCH.DocEntry
    on OVPM.docnum = VPM2.docnum
    where OVPM.Canceled = 'N' AND VPM1.DueDate >=@fromdate AND
    VPM1.DueDate <=@tilldate
    </i>
    955295:
    <i>
    Using SAP Business One Survey Variables (parameters) in a 'Set' SQL Statement can give an error in the Query Generator.
    For Example:
    Declare @Num as numeric(2)
    Set @Num = [%0]
    Select T0.DocNum
    From ORDR T0
    Where DocNum = @Num
    Other terms
    query, SQL, parameter, survey, variable, query generator, set, declare, [%0], table, error, SAP Business One
    Reason and Prerequisites
    FAQ
    Solution
    In such cases you need to put in an SQL remark statement a reference field in the DB for the Survey Variable (any field).
    For Example: (to make the above query work)
    Declare @Num as numeric(2)
    Set @Num = /* T0.DocNum */ [%0]
    Select T0.DocNum
    From ORDR T0
    Where docnum = @Num
    </i>

  • Is it possible to pass a TXT file as an input of a SQL script?

    Dear all,
    I have a question about SQL scripts running in SQL*Plus. I have a table including a list of SAP UserIDs. I would like to check for several people whether their
    ID already exists. Here is how I proceed in my script file.
    SELECT sap_userid
    FROM SAPREF_USERS
    WHERE (sap_userid
    IN
         'user1',
         'user2',
         'user3',
         'user4',
         'user5',
           .          /*  So here I write one by one each userid. Consequently if a user already exists, the script will print his/her UserID */
    GROUP BY sap_userid
    ORDER BY sap_useridWell, this works, but I'm sure there should be a more intelligent method to do the job. If I put all UserIDs in a let's say a TXT file (one userid per line) is there
    any way to pass this text file as an input for the script so I may get rid of the very long IN clause in my SQL query?
    Thanks in advance,
    Kind Regards,
    Dariyoosh

    Yet Another Post Without Version.
    Typing 4 digits and 3 dots, or running select * from v$version and paste the result here
    Qualifies as work, and the very reason you post here is you want to avoid to work, or to earn as much as possible by doing as little as possible.
    In 9i and higher, the file is best treated as an external table, so the whole list of userids is replaced by
    in (select * from external_table)
    But this requires reading documentation, which again qualifies as ... work.
    Ahh, most 'DBA's here are quite hopeless.
    Sybrand Bakker
    Senior Oracle DBA

  • How to pass multi-value input parameter to SQL command

    I'm having trouble following the threads related to passing multi-value parameters to a SQL command.
    I need more details on the work-around that exists for using a dummy main report to GET the input parameters and pass them to a subreport parameter that uses the input parameters in its sql command WHERE clause.
    So far the main report prompts user to enter badge numbers into a multi-value string type parameter field called badgeNumber.
    The main report getRequesters command executes the following SQL:
    SELECT requester FROM lawprod.requester WHERE lawprod.requester.requester IN  '{?badgeNumber}'
    order by requester
    The main report also contains a formula called requesterList that concatenates the input parameters and separates the values with commas:  (Join ({?badgeNumber}, ", ")  
    So if user enters badge numbers 1 and 2 and 3 the value of requesterList is 1, 2, 3
    From the main report I've used the Insert Subreport command to choose an existing report, and used the link tab to link @requesterList to ?requester; where ?requester is a multi-value parameter that is used in the subreport's SQL query as shown below:
    WHERE (lawprod.ictrans.update_date <=  {?endDate} AND
           lawprod.ictrans.update_date >= {?startDate} AND
           lawprod.ictrans.doc_type = 'IS' AND
           lawprod.ictrans.system_cd = 'RQ' AND
           lawprod.mmdist.posting_type = 'O1')
          AND
          (lawprod.ictrans.company = lawprod.mmdist.company AND 
           lawprod.ictrans.system_cd = lawprod.mmdist.system_cd AND
           lawprod.ictrans.location = lawprod.mmdist.location AND
           lawprod.ictrans.doc_type = lawprod.mmdist.doc_type AND
           lawprod.ictrans.document = lawprod.mmdist.doc_number AND
           lawprod.ictrans.shipment_nbr = lawprod.mmdist.doc_nbr_num AND
           lawprod.ictrans.line_nbr = lawprod.mmdist.line_nbr AND
           lawprod.ictrans.component_seq = lawprod.mmdist.component_seq)
          AND
          (lawprod.ictrans.company = lawprod.reqline.company AND 
           lawprod.ictrans.document = lawprod.reqline.req_number_a AND
           lawprod.ictrans.line_nbr = lawprod.reqline.line_nbr AND
           lawprod.reqline.company = lawprod.reqheader.company AND
           lawprod.reqline.req_number = lawprod.reqheader.req_number)
           AND
           (lawprod.reqheader.requester in '{?requester}')
    Following execution of the main report, Crystal appears to prompt for three values as expected: badge numbers for the main report, and start and end dates needed by the subreport.   I can't figure out why Crystal XI returns no data. Can anyone explain what I'm missing?
    Edited by: Patricia Sims on Sep 21, 2009 9:30 PM

    The reason no data is returned is that the multiple values are not (properly?) passed to the main report's SQL.  The main report's SQL should be (MS SQL):
    select 1 as dummy
    This causes exactly one record to be returned, which will basically be ignored (except the fact that it will drive the subreport; any query that returns only 1 record will suffice...).
    Change the concatenation of the selected values to be (basic syntax):
    formula = "|" + join({?badgeNumber}, "|") + "|"
    The leading and trailing vertical bars are important (otherwise a database value of 1 might match a selection of 123).
    Pass the concatenated string as the parameter value to the subreport.  In your subreport, select records on (basic syntax):
    formula = (instr({?sr-badgeParam}, "|"+cstr({requester},"0") + "|") > 0)
    (assumes is numeric in the database, and is integer; modify or eliminate cstr() if otherwise...)
    Put your subreport on the detail format of the main report, and you're all set...
    HTH,
    Carl

  • IScript problem - Cannot use an input in a sql statement

    I get the input from an input box and it is correct
    &param = %Request.GetParameter("Dept");
    I try to use it in a sql statement lke this and nothing displays even though it its entered correctly and the value exists in the table
    Local SQL &usersCursor = CreateSQL("SELECT EMPLID, BIRTHDATE, NAME FROM PS_EMPLOYEES WHERE DEPTNAME_ABBRV = '&param'");
    If I leave out the single quotes around and do it like this &param then it errors out
    Local SQL &usersCursor = CreateSQL("SELECT EMPLID, BIRTHDATE, NAME FROM PS_EMPLOYEES WHERE DEPTNAME_ABBRV = &param");
    I need help structuring this correctly
    Thanks,
    Allen Cunningham

    Hi,
    CreateSQL does not execute the sql statement, it just creates an SQL object, which you have to execute.
    Something like this:
    &param = %Request.GetParameter("Dept");
    Local SQL &usersCursor = CreateSQL("SELECT EMPLID, BIRTHDATE, NAME FROM PS_EMPLOYEES WHERE DEPTNAME_ABBRV = :1", &param);
    While usersCursor.Fetch(&Emplid, &Birthdate, &Name)
    /* do processing*/
    End-While;

  • User input from pl/sql

    How could I get user input from a pl/sql block?
    Hope that somebody can help me.
    thanx
    Amelio.

    There is a package DBMS_LOCK that has a SLEEP routine, which suspends the session for a given period of time (in seconds).
    However, you can only pause the procedure and not accept user input into the procedure during the pause.
    syntax: DBMS_LOCK.SLEEP(1) ;
    I need only to run an 'pause' or something like that within a pl/sql block. Do you know if it's possible? Thanks.

  • Accepting input in PL/SQL

    My requirement is Accepting Input from KeyBoard in the LOOP PL/SQL Block.
    Becasue of PL/SQL constraints I am not able to accept value in the loop
    except the first time. Please advice me is there any other options in PL/SQL
    to accept input from the keyboard in the loop.

    I'm not sure how you can do this, perhaps someone else does.
    I suggest writing a Shell Script or Batch file which accepts the input and then runs SQL*Plus and your script with arguments.
    Good Luck,
    Eric Kamradt

  • Input Elements & PL/SQL Parameters

    I have a FORM open/close HTML block on top...then below the block I have inputs...***THOSE INPUTS ARE NOT TO BE TARGETED TO PARAMETERS ***
    How can one prevent those input from being intepreted as parameter entries W/O removing the name attribute ?
    Thanks
    <form ACTION="wict.accept" METHOD="POST" name="ct_flow" id="CTFlowForm">
    blah..blah...
    </form>
    <input name="day" type="checkbox" checked="checked" onclick="return false">Daily
    <input name="week" type="checkbox" onclick="return false">Weekly

    Dear "50122",
    You may have landed in the wrong forum. If your question is actually about the Oracle HTML DB product, please provide a clear question related to HTML DB and we'll try to help.
    -Scott
    P.S. If you like, you can show your name in this forum instead of a numeric ID by clicking on 'Forum Settings' and setting 'Name visible to others' to Yes.

  • Prompt for input from PL/SQL script.

    I have PL/SQL script running in SQL*Plus. I need to prompt for user initials (all users log-in with the same username) and make those initials part of the script.
    How do I do that?
    I know how to do it for SQL script:
    ACCEPT X PROMPT 'ENTER X: '
    select ....
    where column1 = '&X'
    But what about PL/SQL?
    Thanks a lot.
    -John

    PL/SQL is not interactive, so you can't prompt from it, but you can pass parameters :
    TEST@db102 SQL> set veri off
    TEST@db102 SQL> get inp
      1  declare
      2     p_inp   varchar2(100);
      3  begin
      4     p_inp := '&1';
      5     dbms_output.put_line(p_inp);
      6* end;
    TEST@db102 SQL> @inp PM
    PM
    PL/SQL procedure successfully completed.
    TEST@db102 SQL>                                                              

  • How to accept user inputs from  sql script

    I want to create Tablespace useing sql script , but the location of the data file I need accept from user . (to get the location of the data file ) .
    How can I accept user input from pl/sql .
    Example :
      CREATE TABLESPACE  TSPACE_INDIA LOGGING
         DATAFILE 'H:\ORACLE_DATA\FRSDB\TSPACE_INDI_D1_01.dbf'
         SIZE 500M  AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
         EXTENT MANAGEMENT LOCAL;here I need to accept location of the datafile from user ie : 'H:\ORACLE_DATA\FRSDB\TSPACE_INDI_D1_01.dbf'

    Hi,
    Whenenever you write dynamic SQL, put the SQL text into a variable. During development, display the variable instead of executing it. If it looks okay, then you can try executing it in addition to displaying it. When you're finished testing, then you can comment out or delete the display.
    For example:
    SET     SERVEROUTPUT     ON
    DECLARE
        flocation     VARCHAR2 (300);
        sql_txt     VARCHAR2 (1000);
    BEGIN
        SELECT  '&Enter_The_Path'
        INTO    flocation
        FROM    dual;
        sql_txt :=  'CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
         DATAFILE' || flocation || ' "\SRC_TSPACE_INDI_D1_01.dbf" ' || '
         SIZE 500M  AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
         EXTENT MANAGEMENT LOCAL ';
        dbms_output.put_line (sql_txt || ' = sql_txt');
    --  EXECUTE IMMEDIATE sql_txt;
    END;
    /When you run it, you'll see something like this:
    Enter value for enter_the_path: c:\d\fubar
    old   5:     SELECT  '&Enter_The_Path'
    new   5:     SELECT  'c:\d\fubar'
    CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
         DATAFILEc:\d\fubar
    "\SRC_TSPACE_INDI_D1_01.dbf"
         SIZE 500M  AUTOEXTEND ON NEXT  1280K MAXSIZE
    UNLIMITED
         EXTENT MANAGEMENT LOCAL  = sql_txt
    PL/SQL procedure successfully completed.This makes it easy to see that you're missing a space after the keyword DATAFILE. There are other errrors, too. For example, the path name has to be inside the quotes with the file name, without a line-feed between them, and the quotes should be single-quotes, not double-quotes.
    Is there some reason why you're using PL/SQL? In SQL, you can just say:
    CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
    DATAFILE  '&Enter_The_Path\SRC_TSPACE_INDI_D1_01.dbf'
    SIZE 500M  AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL;though I would use an ACCEPT command to given a better prompt.
    Given that you want to use PL/SQL, you could assign the value above to sql_txt. If you need a separate PL/SQL variable for flocation, then you can assign it without using dual, for example:
    DECLARE
        flocation     VARCHAR2 (300)     := '&Enter_The_Path';The dual table isn't needed very much in PL/SQL.
    Edited by: Frank Kulash on Jan 10, 2013 6:56 AM

  • JTextfield input Date convert to java.sql.Date

    Hi. I have a textfield for users to input date in 'dd/mm/yyyy' format and I would like to format this input into java.sql.Date to be stored into a database. How should I go about doing that ?
    I did the following:
    SimpleDateFormat formatDate = new SimpleDateFormat("dd/mm/yyyy");
    java.util.Date invoiceDate = formatDate.parse(jTextField3.getText());
    java.sql.Date sqlDate = new java.sql.Date(invoiceDate.getTime());and when I input into jTextField3 the value '28/05/2008' , I found in my database '2008-01-28'. January and May is a few months off and is totally not what I wanted.

    Hi you did you code perfect, but you need to change the pattern for formatting the Date
    dd - date
    mm - minute
    yyyy - year
    here you are parsing month as minute, so the output may wrong..!
    If you need to format properly
    please use the below pattern
    {color:#0000ff}SimpleDateFormat formatDate = new SimpleDateFormat("dd/MM/yyyy");{color}

Maybe you are looking for

  • Problem with midi on my Macbook pro

    Ok, so i've been having this problem for a while now...i came on the forums before and asked about it, and people said to get more RAM...so i've done that... Before I thought it was a CPU issue, but now i'm realizing it has something to do with MIDI.

  • FF 5.0 wont show attachment preview in hotmail

    update to 5.0 now when i open email with attachment the preview bar at top just says loading...nothing happens. normally shows preview of pic or vid. works in IE 8

  • Displaying file name for open Acrobat files

    Is there a way to copy and paste the URL for an open pdf file in Acrobat? We currently open the file in MS Word and copy the file link from the web toolbar display. Thanks for the help! Ken

  • Mac OS X 10.8.2's firewall not enabled by default?

    Hello. Is it me or is Mountain Lion's firewall not enabled by default? I didn't check in the preinstalled 10.7.x before I upgraded to it. I find that weird and puzzled why Apple did that if that was by design. Thank you in advance.

  • Setup of Customer Dev and Test environment

    Customer wants to set up a Dev and Test env for Apex on the same machine. Been trying to wrap my head around the way to do this. Seems like these are the options: 1) Separate databases, Two APEX homes, Two HTTP Servers 2) One database, different Work