Calling and manipulating in PL/SQL

Hi, got a problem. Lets say I had a table (TABLE T) with 2 columns (COL A) and (COL B) holding numerical data and I want to manipulate the data as follows:
COLA     COLB
  3          2
  4          4               
  5          7
  6          8
  4          5I want to double the values where the value directly above it is larger.
In the example, the last values of each column (4 and 5) are smaller than their predecessors (6 and 8) and so I want to change them to:
COLA     COLB
  3          2
  4          4               
  5          7
  6          8
  8          10In this case the two values that needed changing were in the same row but this is just coincidence.
I am stuck as to how I would I go about doing this in PL. I’m guessing it will entail an update of some sort with some conditions and a loop but I don’t know how to call a value from the row above and so am stuck as to how to start. I've been goofing around this problem so any suggestions would be much appreciated.

If you have to do this in "PL" (assuming you mean PL/SQL), an easy way would be to use a collection. Comparing individual elements is much easier with an index. But, that will be more like Greek to you, so the brute force approach is use a cursor for loop and store off the prior values into variables.
SQL> select * from t;
      COLA       COLB
         3          2
         4          4
         5          7
         6          8
         4          5
SQL> declare
  2    v_lastA number := -99;
  3    v_lastB number := -99;
  4    v_rowid urowid;
  5    cursor c is
  6    select rowid upd_rowid, colA, colB
  7    from t;
  8  begin
  9    for r in c loop
10      if v_lastA = 99 then
11        --we know this is the first record, so save
12        v_lastA := r.colA;
13        v_lastB := r.colB;
14      elsif
15        r.colA < v_lastA and r.colB < v_lastB then
16        --new values are strictly smaller, so do the update
17        update t
18        set colA = 2*r.colA,
19            colB = 2*r.colB
20        where rowid  = r.upd_rowid;
21      end if;
22      v_lastA := r.colA;
23      v_lastB := r.colB;
24    end loop;
25    commit;
26  end;
27  /
PL/SQL procedure successfully completed.
SQL>
SQL> select * from t;
      COLA       COLB
         3          2
         4          4
         5          7
         6          8
         8         10

Similar Messages

  • Calling and manipulating data on an Interactive Adobe form from ABAP report

    Dear All,
    Can you please tell me how to call an interactive adobe from from a custom adobe form?
    If so how can we pass and receive data between the interactive adobe form and the abap report program?
    Thank you.
    Regards,
    Prosenjit.

    Hi,
    It is possible to call an Interactive Adobe form from ABAP report and pass data into the form. If you search the forum, you will get many threads explaining the process. Let me know if you have any specific questions on this.
    Regards,
    Sanoosh

  • PL/SQL TABLE AS OUT ON PROCEDURE CALL AND JDBCTHIN(NEED HELP

    How can I pass pl/sql record in and out
    and pl/sql tables in out thru a pl/sql procedure using jdbc with
    the zip file of 816classes12.zip...
    I have tried everything I know...
    I know the procedure is working, others are using it with in
    Oracle...
    I need to use the information it generates.
    here is what I have so far...
    try
    Class.forName ("oracle.jdbc.driver.OracleDriver");
    DriverManager.registerDriver (new
    oracle.jdbc.driver.OracleDriver());
    oracle.jdbc.driver.OracleConnection conn =
    (oracle.jdbc.driver.OracleConnection)
    DriverManager.getConnection ("jdbc:oracle:thin:@--","NA","NA");
    // SQL92 SyntaxCallableStatement
    oracle.jdbc.driver.OracleCallableStatement cstmt =
    (oracle.jdbc.driver.OracleCallableStatement)conn.prepareCall
    ("{call cbmd_proposal_PKG.DefaultTerms (?,?,?,?)}" ) ;
    cstmt.setString(1,"5118");
    cstmt.setString(2,"3");
    cstmt.registerOutParameter
    (2,oracle.jdbc.driver.OracleTypes.NUMBER);
    cstmt.registerOutParameter
    (1,oracle.jdbc.driver.OracleTypes.ARRAY,"");
    cstmt.execute();
    catch(Exception e)
    System.err.println(e.toString());
    e.printStackTrace();
    null

    The "X" in the second registerOutParameter is the type name which
    you have created in oracle DB.
    eg. if you have created a nested table
    create Type integer_table is table of number(10);
    then "X" = "INTEGER_TABLE" and it has to be in caps
    and other thing to keep in mind is that it only works with nested
    table or varray and not with pl/sql table.
    Al Pivonka (guest) wrote:
    : How can I pass pl/sql record in and out
    : and pl/sql tables in out thru a pl/sql procedure using jdbc
    with
    : the zip file of 816classes12.zip...
    : I have tried everything I know...
    : I know the procedure is working, others are using it with in
    : Oracle...
    : I need to use the information it generates.
    : here is what I have so far...
    : try
    : Class.forName ("oracle.jdbc.driver.OracleDriver");
    : DriverManager.registerDriver (new
    : oracle.jdbc.driver.OracleDriver());
    : oracle.jdbc.driver.OracleConnection conn =
    : (oracle.jdbc.driver.OracleConnection
    : DriverManager.getConnection
    ("jdbc:oracle:thin:@--","NA","NA");
    : // SQL92 SyntaxCallableStatement
    : oracle.jdbc.driver.OracleCallableStatement cstmt =
    : (oracle.jdbc.driver.OracleCallableStatement)conn.prepareCall
    : ("{call cbmd_proposal_PKG.DefaultTerms (?,?,?,?)}" ) ;
    : cstmt.setString(1,"5118");
    : cstmt.setString(2,"3");
    : cstmt.registerOutParameter
    : (2,oracle.jdbc.driver.OracleTypes.NUMBER);
    : cstmt.registerOutParameter
    (1,oracle.jdbc.driver.OracleTypes.ARRAY,"X");
    : cstmt.execute();
    : catch(Exception e)
    : System.err.println(e.toString());
    : e.printStackTrace();
    : The "X" in the second registerOutParameter is still unknown to
    : me.
    : The JavaDoc for the
    OracleCallableStatement.registerOutParameter
    : is not clear.
    : Can any One help simplify this...
    : Thanks
    null

  • Calling BAPI and manipulating using macros

    Hello Guys,
    Calling BAPI from SAP and manipulating the same using some macros or similar kind of code in MS Excel.
    Can u give one example to the above scenario with step by step procedure.
    thanks.
    Regards,
    reddy.

    Hello Guys,
    Calling BAPI from SAP and manipulating the same using some macros or similar kind of code in MS Excel.
    Can u give one example to the above scenario with step by step procedure.
    thanks.
    Regards,
    reddy.

  • Good day Friends. My phone loses signal when I receive calls and people do not listen to me at times.   I bought my phone used by Amazon and I think it was open, because I see that this manipulated by one hand.  Someone I can help.?

    Good day Friends.
    My phone loses signal when I receive calls and people do not listen to me at times.
      I bought my phone used by Amazon and I think it was open, because I see that this manipulated by one hand.
    Someone I can help.?

    nessbass wrote:
    people do not listen to me at times.
    That's not a phone issue, but rather that they simply find you uninteresting.
    nessbass wrote:
    I bought my phone used by Amazon and I think it was open, because I see that this manipulated by one hand.
    Amazon is not an official reseller.
    If the device has been opened by anyone other than Apple the warranty is voided.

  • Calling a report from pl/sql

    Is it possible to call a report from pl/sql. I want to create a package which when invoked by dbms_jobs will create parameters and then call a report.
    Thanks in advance,
    Mark.

    Mark,
    cf: http://download-uk.oracle.com/docs/cd/B10464_05/bi.904/b13673/pbr_evnt.htm#sthref1477
    Patrick.

  • Calling a stored procedure on SQL 2008 server

    This might be easy one, but I tried different things just cannot get it to work.
    I am trying to call a stored procedure in SQL 2008 R2 server using Type 4 driver (sqljdbc4.jar) with JR.
    The stored procedure basically has one input and two outputs
    ALTER PROCEDURE [dbo].[usp_Example_Master]
    @XMLResponse as varchar(max),
    @ERROR_NUMBER as int OUTPUT,
    @ERROR_MESSAGE as varchar(300) OUTPUT
    as
    My program.
    Connection connection =null
    CallableStatement cs =null;
    connection = DriverManager.getConnection(url, username, password);
    cs = connection.prepareCall("{call dbo.usp_Example_Master(?,?,?)}");
    cs.setString(1,requestStr);
    cs.registerOutParameter(2, Types.INTEGER);
    cs.registerOutParameter(3, Types.VARCHAR);
    cs.execute();
    ============
    Error: The output parameter 1 was not registered for output.
    But if I added cs.registerOutParameter(1, Types.VARCHAR);
    Error: The formal parameter "@XMLResponse" was not declared as an OUTPUT parameter, but the actual parameter passed in requested output
    ==========
    Appreciate any help !

    Ok. I have an alternative to get it to work now.
    Instead of using index number, I am using the parameter name now. It works as expected and more intuitive any way.
    Ex.
    cs.setString("XMLResponse",req);
    cs.registerOutParameter("ERROR_NUMER",Type.INTEGER);
    Edited by: 903857 on Dec 21, 2011 2:45 PM

  • DB Adapter calling stored procedure in MS SQL Server.

    Hi
    i am calling a stored procedure in a MS SQL Server.
    I configured a Datasource for MS SQL Server driver as Oracle's MS SQL Server Driver(Type 4) Versions: 7.0 and later and provide all db details of sql server. I tested the data source and was getting success message. My BPEL code is just talking with input parameter and then calling the stored procedure in sql server. I was able to compile the code in jdeveloper and deploy to weblogic. But when i am testing the code. i am getting an error.
    <env:Fault>
    <faultcode>env:Server</faultcode>
    <faultstring>Exception occured when binding was invoked.
    Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'IDMService' failed due to: JCA Binding Component connection issue.
    JCA Binding Component is unable to create an outbound JCA (CCI) connection.
    Test:IDMService [ IDMService_ptt::IDMService(InputParameters,OutputParameters) ] : The JCA Binding Component was unable to establish an outbound JCA CCI connection due to the following issue: javax.resource.spi.IllegalStateException: [Connector:199176]Unable to execute allocateConnection(...) on ConnectionManager. A stale Connection Factory or Connection Handle may be used. The connection pool associated with it has already been destroyed. Try to re-lookup Connection Factory eis/sql/idm from JNDI and get a new Connection Handle.
    Please make sure that the JCA connection factory and any dependent connection factories have been configured with a sufficient limit for max connections. Please also make sure that the physical connection to the backend EIS is available and the backend itself is accepting connections.
    The invoked JCA adapter raised a resource exception.
    Please examine the above error message carefully to determine a resolution.</faultstring>
    <faultactor/>
    <detail>
    <exception>[Connector:199176]Unable to execute allocateConnection(...) on ConnectionManager. A stale Connection Factory or Connection Handle may be used. The connection pool associated with it has already been destroyed. Try to re-lookup Connection Factory eis/sql/idm from JNDI and get a new Connection Handle.</exception>
    </detail>
    </env:Fault>
    What is the problem with connection . How cna i rectify it.
    Thanks,
    Venu Raja

    followed the steps mentioned in meatalnk..
         JCA-12563 - Unable to Establish an Outbound JCA CCI Connection [ID 1235943.1]
    Metalink ID - 1235943.1

  • Creation of DB Adaptert for calling stored procedure in MS SQL server

    Hi,
    I need to create a DB adapter to call a stored procedure in MS SQL Server.
    I have gone thru the thread MS SQL Server database connection
    It mentions that we need to use a command line utility for generating the wsdl and xsd for calling stored procedures in MS SQL server. Please provide information where to find this utility and how to use it.
    Any links to tutorials are welcome.
    Thanks !!.
    Silas.

    Command line is required for stored procedures, if you are using the basic options you don't need to worry.
    (1) Download MS SQL Server 2005 JDBC Driver from Microsoft Site. http://msdn.microsoft.com/en-us/data/aa937724.aspx
    (2) The download is self extracting exe file. Extract this into Program Files on your machine. It should create folder as "Microsoft SQL Server 2005 JDBC Driver"
    (3) In above mentioned folder search for sqljdbc.jar copy this file into JDeveloper\JDBC\lib folder.
    (4) Open JDeveloper/jdev/bin/jdev.conf file add following entry.
    AddJavaLibPath C:/Program files/Microsoft SQL Server 2000 Driver for JDBC/lib
    While executing this step make sure that your JDeveloper is closed.
    (5) On command prompt go to J Developer folder and execute following command
    jdev -verbose
    This will open JDeveloper.
    (6) Now go to JDeveloper > Connections > Database Connections > New Database Connection
    (7) Select Third Party JDBC
    (8) Specify MS Sql Server User Name, password and Role.
    (9) In connection page specify following
    - Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver
    - For class path browse to C:/Program files/Microsoft SQL Server 2000 Driver for JDBC/lib folder, select sqljdbc.jar add it as library.
    - Specify URL as following.
    jdbc:sqlserver://SERVERNAME:1433;databaseName=MSSQLDBNAME;
    (10) Go to Test page and test it.
    cheers
    James

  • Japanese Data Set and Get Problem with SQL

    Hi,
    I am not able to retrieve or set data contain Japanese characters.
    Formerly our set up was running just fine. But on doing installation on a new machine, things have gone all haywire.
    I installed Win NT 4.0 Japnese version and SQL 7.0 and later Win 2000 Server Japanese version with same SQL 7.0, but on both get and set I get SQL Exceptions:
    Query 1:
    SELECT DISTINCT MAKER_CD FROM T_MAKER WHERE MAKER_NAME = '�a�l�v�A���s�i' Exception:
    [Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string '�a�l�v�A��'.
    Query 2:
    Insert into Car (intCarID, nvchCustomerID, nvchCarMaker, nvchCarModel,nvchCarDescription, nvchCarCode, nvchCarColor, tintRegistrationCalendar,tintRegistrationMonth, intRegistrationYear,nvchAnnualMileage, nvchPurpose, intNoOfKms,intAirBag, btEcologicalCar, btAntilockBreakSystem,btAntiskid, btSafetyBody, btAntitheft, btFourWheelDrive,btCarModification, nvchLicensePlateArea, intLicensePlateType,nvchLicensePlateHiragana, tintLicensePlateNumber,nvchCarManufacturingNumber, nvchCarOwner, btCurrentlyInsured)Values( 1, 'NI200205040001','','', '', 'HA11S', '���I����������',2,1, 11 ,'5000', '�����E���W���[',0,2,0,0,0,0,0,0,0,'',0,'null', '0' ,'', '�_�������{�l' , 0)
    Exception:
    [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'null'.
    I do not wish to Prepared Statements. I will need to update all my JDBC calls this way.
    Would be grateful if any solutions to this problem could be provided.
    Tahanks and Regards

    If you are using the JDBC-ODBC bridge, then add the 'charset' property (with the name of the japanese charset as value, or whichever you are using) to the Properties instance you pass on to getConnection().
    Alin.

  • How to call javascript function from PL/SQL procedure

    Can anybody advice me how to call javascript function from PL/SQL procedure in APEX?

    Hi,
    I have a requirement to call Javascript function inside a After Submit Process.
    clear requirement below:
    1. User selects set of check boxes [ say user want to save 10 files and ticks 10 checkboxes]
    2. user clicks on "save files" button
    3. Inside a After submit process, in a loop, i want to call a javascript function for each of the file user want to save with the filename as a parameter.
    Hope this clarify U.
    Krishna.

  • Need to call Shell script that uses SQL loader in APex4.1/11g

    Hi there!
    I have a requirement, wherein I have to call a shell script that connects to an external server, ftp's a file in and then uses sqlloader to load data into our table. Now we have the ftp script that does this for another program, but is a scheduled job. I wanted to call the ftp shell script from within APEX. Any suggestions on how this can be done, what PL/SQL logic can we use? I see online some people using dbms scheduler for this?
    Thank you
    Sun

    Hi,
    Create some sh script on your oracle host machine where you can join into external server and run the process.
    something like:
    run_external_sh.sh
    #!/bin/sh
    ssh ext_user@ext_host ./sqlloader/import/import.shThen create a external JOB to call it via ORACLE(PL/SQL)
    -- Call Shell Script.
    BEGIN
      DBMS_SCHEDULER.create_program (
        program_name        => 'external_call_sh',
        program_type        => 'EXECUTABLE',
        program_action      => '/local_host/call_external/sh/run_external_sh.sh',
        number_of_arguments => 0,
        enabled             => TRUE,
        comments            => 'Call external SH script');
    END;
    /Now you can create a scheduled/or not scheduled JOB
    -- Job defined by an existing program and schedule.
    BEGIN
      DBMS_SCHEDULER.create_job (
        job_name      => 'jb_external_call_sh',
        program_name  => 'external_call_sh',
        schedule_name => 'external_call_scheduler', -- created scheduler
        enabled       => TRUE,
        comments      => 'Job defined by an existing external_call_sh program and schedule.');
    END;
    /Now you can call the JOB in APEX in PL/SQL process.
    BEGIN
      -- Run job synchronously.
      DBMS_SCHEDULER.run_job (job_name            => 'jb_external_call_sh');
    END;Regards
    J :D

  • How to call a function with pl/sql

    How does one call a function with pl/sql that uses a function?

    Hi,
    How does one call a function with pl/sql that uses a
    function?I'm not sure what you mean.
    In PL/SQL function can be used just about anywhere where an expression (with the same data type that the function returns). Arpit gave a very common example.
    Here's another example, where all the functions take a single NUMBER argument and return a NUMBER, so they can all be used in places where NUMBERs are used:
    IF  fun_a (fun_b (0)) < fun_c (1)
    THEN
        UPDATE  table_x
        SET     column_y = fun_d (2)
        WHERE   column_z = fun_e (ROUND ((fun_f (3), fun_g (4)));You call a function simply by using its name, followed by its argument list, if any.
    If the function is in a package, you must call it with the package name, like "pk_foo.bar (1, 2, 3)", unless the call comes from within the same package.
    If the function is owned by someone else, you must give the owner name, like "scott.bar (SYSDATE)" or "scott.pk_foo.bar (1, 2, 3)". You can create synonyms to avoid having to name the owner.

  • Syntax for calling html page in PL/SQL package

    Hi,
    I'm trying to call html page (stored on server) in my pl/sql package!
    I have already create html page in pl/sql package code and it's works fine.
    Now create better html page (interface design) and stored on server. I would like to call that stored html page in my pl/sql package.
    What is syntax for calling html page in PL/SQL or could you suggest me some literature.
    In first option I had created ces and stored it on server. Then I call it in pl/sql package like htp.p('<link rel="stylesheet" href="\download\table_style.css" type="text/css">');
    I try someting like that for calling html page but it doesn't works.
    htp.p('<link rel="form" href="\download\interface.htm" type="text/html">');
    Does anyone know syntax for calling html page in pl/sql?!?
    Thanks!

    hello
    I normally use htp.anchor(URL,linkname);
    it works
    ammar sajdi
    www.e-ammar.com/Oracle.htm

  • Query Builder in 3.0 Can it be called and used as part of an application

    The query builder component is nice from an end user perspective. Can it be called in version 3.0 as part of an application? i.e. the user gets the tables listed in the app and can create the sql query as done when building the app? If so, does anyone know why not? Seems like all you'd have to limit it to would be the all_tables view where owner = 'application owner'. Has anyone tried to call this module?
    Bob

    HI Bob,
    No you cannot call the query builder from your application.
    You have a couple options though, one is to give the user developer rights, and then they can access the query builder, or you can search the forum for QBE, and that will generate 3 pages of hits. There's a couple generic variations out there that may suffice.
    Hope this helps,
    Bill Ferguson

Maybe you are looking for