The simplest way for plsql procedure to return multiple rows

Hi,
What is the simplest way for plsql procedure to return multiple rows (records). There are many combination of ways to do it but I am looking for a solution that is appropriate for plsql beginners. Many solutions use cursors, cursor variables, collections and more that kind of things that are complex on the face of it. Is it somehow possible to achieve the same with less effort?
Sample query would be: SELECT * FROM EMPLOYEES;
I want to use returned rows in APEX to compose APEX SQL(in that context plsql) report.
It is enough to use just SELECT * FROM EMPLOYEES query in APEX but I want to use plsql procedure for that.
Thank you!

Hi,
It depends :-).
With +...that is appropriate for plsql beginners...+ in mind... it still depends!
The list of techniques (ref cursors, cursor variables, collections, arrays, using explict SQL) you have referenced in your post can be made to work. but...
+Is it somehow possible to achieve the same with less effort?+ Less effort : That needs to be defined (measured). Especially in the context of pl/sql beginners (who is a beginner?) .
What is the level of "programming experience" ?
What is the level of understanding of "Relational Result set" as processible in Oracle?
If you are looking for
Process_the_set_of rows_in APEX () kind of capabilitywhich "abstracts/hides" relation database from developers when working on relation database, it may not be the best approach (at least strategically). Because I believe it already is abstracted enough.
I find REF CUROSOR most effective for such use, when the "begginer" has basic understanding of processing SQL result set .
So in a nut shell, the techniques (that you already are familiar with) are the tools available. I am not aware of any alternative tools (in pure Oracle) that will simplify / hide basics from develpers.
vr,
Sudhakar B.

Similar Messages

  • HOW TO EXECUTE A STORE PROCEDURE THAT RETURN MULTIPLE ROWS FROM A QUERY

    I NEED TO CREATE AND USE A STORE PROCEDURE THAT IS GOING TO DO A SELECT STATEMENT AN THE RESULT OF THE SELECT STATEMENT IS RETURN IN SOME WAY TO THE REQUESTER.
    THIS CALL IS MADE BY AN EXTERNAL LANGUAGE, NOT PL/SQL OR FORMS APPLICATION. USING FOR EXAMPLE ODBC AND VISUAL BASIC. WHAT I NEED TO DO IS ADD A DATA ACCESS LAYER TO MY APPLICATION AND I ALREADY HAVE IT DONE FOR MS SQL SERVER, BUT I NEED THE SAME FUNCTIONALITY ACCESSING AN ORACLE DATABASE.
    FLOW:
    1. VB CREATE A ODBC CONNECTION TO A ORACLE DATABASE
    2. VB EXECUTE A STORE PROCEDURE
    3. THE STORE PROCEDURE RETURNS TO THE VB APPLICATION THE RESULT OF THE QUERY THAT IS INSIDE OF THE STORE PROCEDURE.(I.E. THE STORE PROCEDURE IS A BASIC SELECT, NOTHING COMPLEX)
    4. VB DISPLAY THE RESULT IN A GRID
    FOR SURE I CAN DO THE SELECT DIRECTLY TO ORACLE, BUT FOR PERFORMANCE REASONS AND SCALABILITY, I'LL LIKE IT TO DO IT USING A STORE PROCUDURES
    IS THIS POSIBLE?, HOW?
    THANKS

    Certainly, it's possible. First, define a stored procedure that includes an OUT parameter which is a REF CURSOR. Then, call the stored procedure via ODBC omitting the OUT parameter from the list of parameters. IT will automatically be returned as a result set. Syntax for both is below...
    CREATE PROCEDURE foo (inParam in varchar2, resultSet OUT REF CURSOR )
    In ODBC:
    {call foo( 'someData' )}
    Justin

  • Problem with database control returning multiple rows as Array  using Oracle

    Has anybody using Oracle gotten a Database control that
    returns multiple rows to work returning an array?
    The only way I can seem to return multiple rows is by returning
    a RowSet. Returning an array gives me a NullPointerException
    (when called within a pageFlow). When calling a database control
    that returns an array from a web service I get a
    "java.sql.SQLException: ResultSet has no more data." error.
    The samples using the pointbase database seem to work, but when I
    converted the CustomerDBClient web service to use Oracle, it starts
    failing on calling the database control that returns an array
    with: "java.sql.SQLException: ResultSet has no more data."
    Has anybody gotten this to work using Oracle?
    I'm also having some problem returning an Iterator. It seems
    to work when called from a web service, but returns nothing
    if called from a page flow.
    I'm using Oracle 8.1.7 and WebLogic 8.1.
    Eric

    Do you need a particular service pack installed to return an array of custom object?
    I am getting a ResultSet contained no data error when trying.
    Thanks,
    -Thomas
    "Robin Karlin" <[email protected]> wrote:
    >
    Eddie O'Neil <[email protected]> wrote:
    All--
    Unfortunately, returning an Iterator to a JPF (or JSP) from a
    database control is broken in WLW 8.1, though it will work inside of
    a
    JWS or JCS.
    There shouldn't be a problem with returning an array of objects out
    of Oracle to the JPF, and if you need an Iterator specifically, youcan
    wrap the array in an Iterator implementation.
    Sorry for the inconvenience.
    Eddie
    Lenny wrote:
    I have gotten it to work on Oracle using Array:)
    However, I haven't gotten it to work on Oracle using Iterator:( Itis so
    simple, but doesn't work:(
    "Eric Dokken" <[email protected]> wrote in message
    news:[email protected]...
    Has anybody using Oracle gotten a Database control that
    returns multiple rows to work returning an array?
    The only way I can seem to return multiple rows is by returning
    a RowSet. Returning an array gives me a NullPointerException
    (when called within a pageFlow). When calling a database control
    that returns an array from a web service I get a
    "java.sql.SQLException: ResultSet has no more data." error.
    The samples using the pointbase database seem to work, but when I
    converted the CustomerDBClient web service to use Oracle, it starts
    failing on calling the database control that returns an array
    with: "java.sql.SQLException: ResultSet has no more data."
    Has anybody gotten this to work using Oracle?
    I'm also having some problem returning an Iterator. It seems
    to work when called from a web service, but returns nothing
    if called from a page flow.
    I'm using Oracle 8.1.7 and WebLogic 8.1.
    Eric
    I get the same error that Eric reported when trying to return an Array
    of objects.
    It is really frustrating because I can't use much of the built-in control
    logic
    that WLW provides. All I did was create a data pool for Oracle and a
    datasource.
    I modified the sample app in C:\bea81\weblogic81\samples\workshop\SamplesApp\WebApp\callJavaControl
    to point to that datasource and I get the error that Eric reports above.
    Can
    anyone help me out????
    Thanks,
    Robin

  • Stored Procedure Returning Multiple Rows

    Hello. Where can I find sample code from a class that calls a stored procedure that returns multiple rows?
    I have a servlet that calls the DB directly from the servlet & loops through the result set. I want to put that code into a stored procedure, but I'm not sure how to loop through the results.
    Your help is greatly appreciated!

    Surely you would call the stored procedure and loop
    through the resultset as usual.
    all that is different is the method by which you obtain the resultSet .
    assuming CallableStatement, Connection have been
    instantiated.
    cstmt=con.prepareCall("{call sp_NewOfficeSurgery (?,?)}");
    cstmt.setString(1,"first");
    cstmt.setString(2,"second");
    rs = cstmt.executeQuery();
    while (rs.next())
    String nme = rs.getString(1)
    etc,etc
    Hope this helps , Sorry If I have misinterpreted this
    please let me know if my thinking is floored or you need
    further clarification ect.
    [email protected]

  • Password encrypt - looking for the simplest way

    I�m implementing a web application which needs to encrypt the user password and store it in a database... (the classic scenario).
    what is the simplest way to encrypt the user password?
    I need only the encryption method..

    There are several ways: You do a secure hash of the password and store that. Then, when you want to verify the password, you do the same hash of the proposed password and if they match, you call it macaroni. Alternately, you can encrypt the password using DES or some other private key encryption technique. The technique for authentication is the same: encrypt the proposed password and if the cipertext matches that stored in your DB, the user is authenticated.
    You can do an SHA-1 hash or DES encryption using the JCE.
    See here:
    http://www.ja.net/CERT/Belgers/UNIX-password-security.html
    http://www.itworld.com/nl/unix_sec/12062001/

  • What is the simplest way to make a movie from BufferedImages?

    I have a 3d rendered animation from which I can grab BufferedImages of each frame. What is the simplest way I can create a movie from these images?
    I've seen the JpegImagesToMovie.java file and not only is it suprisingly overcomplicated, it requires me to change the code so that I can get images from memory rather than from files.
    Is there some simple way of creating a movie which requires a few statements? I'm also prepared to use QuickTime for Java. I don't care about the format, since I can just use any video converter to convert it to my desired video format.

    I recently came up with a simplified JpegImagesToMovie program. It generates QuickTime movies with a single video track output as a file. Input is a series of jpegs (currently as a list of file names, but easily modified to a take any form of jpeg data.) Since the compression used by the movie is JPEG, if you have an uncompressed image buffer, you'll need to convert that into jpeg data bytes with some quality setting. (Since its a movie file, go with something low if you have a lot of similar images.) This will even run without a full install of jmf--no native code is called (as far as I could tell..)
    Here is the source code, sorry about the formatting!
    import java.awt.Dimension;
    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.net.URL;
    import java.util.Vector;
    import javax.media.Buffer;
    import javax.media.Format;
    import javax.media.MediaLocator;
    import javax.media.format.VideoFormat;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.FileTypeDescriptor;
    import com.sun.media.multiplexer.video.QuicktimeMux;
    * This program takes a list of JPEG image files and converts them into a
    * QuickTime movie.
    * This was based on Sun's JMF Sample Code JpegImagesToMovie.java 1.3 01/03/13
    * This code is an attempt to reduce the complexity to demonstrate a very basic
    * JPEG file list to movie generator. It does not use a Manager or Processor
    * class, so it doesn't need to implement any event listening classes. One
    * advantage of this simplified class is that you can just link it with the
    * jvm.jar file. (you might also need to track down the com.ms.security library
    * stubs, use google. You'll need PermissionID.java and PolicyEngine.java.)
    * I tried to get it to generate AVI files without success.
    * These output files are could use further compression.
    * A Vector of jpeg image paths was one way to do this--the appropriate
    * methods can be overwritten to grab images from another source
    * --zip file, http, etc.
    * - Brad Lowe; Custom7; NuSpectra; 2/10/2005
    * The existing Copyright from Sun follows.
    * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY
    * OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear facility.
    * Licensee represents and warrants that it will not use or redistribute the
    * Software for such purposes.
    public class SimpleMovie
    Vector images; // jpeg image file path list
    VideoFormat format; // format of movie to be created..
    // Sample code.
    public static void main(String args[])
    try
    // change imageDir to the location of a directory
    // of images to convert to a movie;
    String imageDir = "images";
    File d = new File(imageDir);
    SimpleMovie imageToMovie = new SimpleMovie();
    // change width, height, and framerate!
    // Excercise: Read width and height of first image and use that.
    imageToMovie.init(320, 240, 10.0f);
    imageToMovie.setFiles(d);
    File dest = new File("simple.mov");
    imageToMovie.createMovie(dest);
    System.err.println("Created movie " + dest.getAbsolutePath() + " "
    + dest.length() + " bytes.");
    } catch (Exception e)
    System.out.println(e.toString());
    e.printStackTrace();
    // return jpeg image bytes of image zIndex (zero-based index)
    public byte[] getImageBytes(int zIndex) throws IOException
    if (images == null)
    return null;
    if (zIndex >= images.size())
    return null;
    String imageFile = (String) images.elementAt(zIndex);
    // Open a random access file for the next image.
    RandomAccessFile raFile = new RandomAccessFile(imageFile, "r");
    byte data[] = new byte[(int) raFile.length()];
    raFile.readFully(data);
    raFile.close();
    return data;
    // Call this before converting a movie;
    // Use movie width, height;
    public void init(int width, int height, float frameRate)
    format = new VideoFormat(VideoFormat.JPEG,
    new Dimension(width, height), Format.NOT_SPECIFIED,
    Format.byteArray, frameRate);
    // Set up the files to process
    public void setFiles(Vector inFiles)
    images = inFiles;
    // point converter to jpeg directory. Only does one level,
    // but could recurse, but then sorting would be interesting..
    public void setFiles(File dir) throws Exception
    if (dir.isDirectory())
    if (images == null)
    images = new Vector();
    String l[] = dir.list();
    for (int x = 0; x < l.length; x++)
    if (l[x].toLowerCase().endsWith(".jpg"))
    File f = new File(dir, l[x]);
    images.addElement(f.getAbsolutePath());
    // Crank out the movie file.
    public void createMovie(File out) throws Exception
    if (format == null)
    throw new Exception("Call init() first.");
    String name = out.getAbsolutePath();
    QuicktimeMux mux = null; // AVI not working, otherwise would use
    // BasicMux
    if (out.getPath().endsWith(".mov"))
    mux = new QuicktimeMux();
    mux.setContentDescriptor(new ContentDescriptor(
    FileTypeDescriptor.QUICKTIME));
    } else
    throw new Exception(
    "bad movie file extension. Only .mov supported.");
    // create dest file media locator.
    // This sample assumes writing a QT movie to a file.
    MediaLocator ml = new MediaLocator(new URL("file:"
    + out.getAbsolutePath()));
    com.sun.media.datasink.file.Handler dataSink = new com.sun.media.datasink.file.Handler();
    dataSink.setSource(mux.getDataOutput()); // associate file with mux
    dataSink.setOutputLocator(ml);
    dataSink.open();
    dataSink.start();
    // video only in this sample.
    mux.setNumTracks(1);
    // JPEGFormat was the only kind I got working.
    mux.setInputFormat(format, 0);
    mux.open();
    // Each jpeg goes in a Buffer.
    // When done, buffer must contain EOM flag (and zero length data?).
    Buffer buffer = new Buffer();
    for (int x = 0;; x++)
    read(x, buffer); // read in next file. x is zero index
    mux.doProcess(buffer, 0);
    if (buffer.isEOM())
    break;
    mux.close();
    // close it up
    dataSink.close();
    // Read jpeg image into Buffer
    // id is zero based index of file to get.
    // Always starts at zero and increments by 1
    // Buffer is a jmf structure
    public void read(int id, Buffer buf) throws IOException
    byte b[] = getImageBytes(id);
    if (b == null)
    System.err.println("Done reading all images.");
    // We are done. Set EndOfMedia.
    buf.setEOM(true);
    buf.setOffset(0);
    buf.setLength(0);
    } else
    buf.setData(b);
    buf.setOffset(0);
    buf.setLength(b.length);
    buf.setFormat(format);
    buf.setFlags(buf.getFlags() | Buffer.FLAG_KEY_FRAME);
    }

  • I want to load movies in to my iPad through itune in my pc that runs window XP. First of all I am not able to add the movies to the itune ,leave aside sync to iPad .can some one suggest what is the simplest way to load movies in my iPad.

    I have plenty of DVD which I load in my laptop and watch the movies while travel, however I am not able to do that in my iPad .
    I would appreciate some one guide me the simplest way of loading the movies in to my iPad. I tried the conventional procedure of loading/copying in to itune then sync to the iPad to load all movies in it, but failed to do the first step( not able to load /copy in itune) leave aside the sync to iPad next.
    Do I need to sellout some 20 odd $ to buy a conversion software that would help?
    Is it that Apple trying to make money by not making this simplest of thing possible by the user.( ref. windows, every thing is possible with little IQ of the user).
    If it is so , I would stop many of my friends to restrain from buying a device like this by spending some 1000$   ,rather look at a good Droid that is catching up so well.

    If you are the only user on your computer you probably don't have multiple user accounts set up and can disregard that.  If you are using iTunes 11 go to View>Show Sidebar.  Now see if your iPad appears under Devices on the left side when you connect it.  If it does, click on the name of your iPad on the left side and your iTunes sync settings options will appear in folders with tabbed headings to the right.
    If it doesn't appear on the left side, follow the troubleshooting steps shown in this article: http://support.apple.com/kb/TS1538.

  • Need to know the simplest workflow for Flash CS5 to iPad

    Hi There,
    Can you please tell me the simplest workflow for Flash CS5 to iPad.
    I want to put my company's flashCS5 made interactive portfolio(with FLV video showreel) into ipad to show my clients.
    What is the simplest way?? I am not familier with codes or programming.
    Can you help me guys??
    -Sahid
    I am using PC.

    It doesn't matter whether you use a MAC or a PC to create the content - the iPad simply will not accept it. It was designed with exactly that purpose in mind. That's why I advised you to get rid of it. Stick to PC and you'll have zero problems.
    Just a hint - a Sony Vaio (the 11 " models with carbon fiber casing) look even more prosperous, are the same weight, and since they run Windows OS will not have the typical Apple limitatations
    Emil Georgiev - Flash & Web Design

  • The simplest way to get a line chart

    Hi there. Could You tell me what's the simplest way to get such effect as below:
    http://docs.xuiframework.com/xchart/images/lineChart.jpg
    A piece of code would be very helpful. I'm not thinking of GFW_PRES_SHOW FModule, because it has limitations 32 data elements whilst I need more than 32.
    I'd be very thankful for suggestions. Greetings.

    Amitava De
    I need to put chart into screen container
    a®s
    Unfortunately not

  • What is the correct way for each user to have there own data?

    Hi All,
    I'm building an app that each user that logs in sees no one else's data except what he or she enters.
    What is the proper way for the easiest maintenance using this model?
    Where do I start?
    Thank you, Bill

    Bill,
    Look into Fine Grained Access Control (FGAC). It is Oracle's version of Virtual Private Database (VPD). In a nutshell what it does is when a "SELECT * FROM table" is used against a table that has a policy on it, the policy will append the appropriate WHERE clause to the SELECT statement automatically. In you instance you probably have some type of USERNAME column. When "SELECT * FROM table" was executed the database engine would change it to "SELECT * FROM table WHERE USERNAME = 'RIFE'" and execute that SELECT statement. You write a function which returns the text to be automatically appended to the WHERE clause. You define a policy on the table which names the function to fire.
    Google for "Fine Grained Access Control" or "Virtual Private Database".
    (Sorry I duplicated what Jes posted. Great minds think alike.)
    Mike

  • Which is the best way for a called function to identify caller class name.

    Which is the best way for a called function to identify the caller class name .
    1)Using sun.reflect.Reflection from called function
                    Class caller = Reflection.getCallerClass(2);
                    System.out.println("Caller Class Name ::"+caller.getName());2) Analyzing current threads stack trace from called function
                    StackTraceElement[] stElements=Thread.currentThread().getStackTrace();
                    System.out.println("Caller Class Name ::"+stElements[3].getClassName());Is there any alternate ways to achieve the same .Which is the best way ?
    Called function doesn’t have any arguments, I don’t want t pass any arguments from caller function to called function.
    Plz help.
    With kind regards
    Paul

    798185 wrote:
    Which is the best way for a called function to identify the caller class name .
    Is there any alternate ways to achieve the same.SecurityManager
        // 0 is the anonymous SecurityManager class
        // 1 is this class (also works in static context)
        // 2 is calling class
        static Class getClass(int i) {
            return new SecurityManager() {
                protected Class[] getClassContext() {
                    return super.getClassContext();
            }.getClassContext();

  • What is the simplest way to get video from mini DV tapes into computer

    My computer has no firewire connection. What is the simplest way to get the video from my camera (JVC GR-D340EK) ?

    Mikeathome
    Thanks for the reply.
    The reason that I asked if this was a one time thing or not was related to my thoughts about asking you to look at the relative costs of have the DV data capture firewire done professional or by a friend versus going through looking for slots on your computer for a firewire card or purchasing a computer that still comes with a firewire port.
    We will be watching for further developments.
    Thanks.
    ATR

  • What is the simplest way to remove duplicates on both iMac and iPad2?

    What is the simplest way to remove duplicate photos from both iMac &amp; iPad2?

    The implication here is that your music is only on the iPod, for if it is in iTunes, you need only do the restore. So you are really asking how you move the music from your iPod back into iTunes, so that when you restore it will go back to the iPod. Take a look at Para. 8 in this summary post I worked up.

  • I now have 4 itouchs, 1 ipad mini, and three iphones for my own family members.  What's the bet way for me to setup itunes so that we can all share the same music, apps, movies, shows, etc?

    I now have 4 itouches, 1 ipad mini and 3 iphones in use by my direct family.  What's the best way for me to set things up so that we can all share the same music, apps, movies, shows etc?
    I would prefer to have one account to input dollars which allows all the users (my direct family) to share and buy things.
    Can we all have different user ID's however share the same account?

    I'll try to help a bit.
    ITunes match space is different to icloud space. With iTunes match you get storage for 25,000 non iTunes purchased tracks and other than a limit for individual file size, there is no memory limit.
    You can turn match on individuallyon each device (I have it turned off on my iPod but turned on on my iPad and iPhone). When you turn it on then you get access to all the tracks, and in my experience any playlists I create have transferred over very well. I understand that some people have had trouble with playlists though.
    I'm not quite clear with exactly what you mean regarding cleaning up your library, but be careful about using Match for this. There is no guarantee that matched songs will be exactly the same version as your own copy, due to some mismatches, so you could find some problems there. Personall, I am cleaning up my library before matching, but I am rather particular about keeping my library the way I want it. If you aren't as fussed then match could be the answer.
    Hope that helped.

  • What is the simplest  way to get a xml-file from 10g R2 -database ?

    Hi,
    I'm new in xml, there are so many tools to work with xml:
    what is the simplest way to get a xml-file from 10g R2 -database ?
    I have : 10g R2 and a xsd.file to describe the xml-structure
    thank you
    Norbert

    There is no automatic way to generate XML documents from an arbitary set of relational tables using the information contained in an XML Schema. Typically the easiest way to generate XML from relational data is to use the SQL/XML operators (XMLElement, XMLAGG, XMLAttribtues, XMLForest). There are many examples of using these operators in the forums You can validate the generated XML against the XML Schema by registering the XML Schema with XML DB and then using the XMLType.SchemaValidate() method

Maybe you are looking for

  • Edge Animate .oam files taking a long time to load or not loading at all?

    http://pierosalardi.businesscatalyst.com Is there a way to correct this? I have exported this Muse Site and uploaded into my server and the same thing is happening: http://pierosalardi.com/animate/ Its taking to much time to load the .oam files and s

  • HT2373 how can i import contacts from icloud

    I just bought an Macbook Air and need to import Contacts from icloud. What is the easiest way to do this.

  • How do I delete a wifi network when I don't have the password?

    Yesterday, I had some work done on my home network, which affected all my wireless devices.  I was able to get everything up and running, but the Ipad.  I have a different type of encryption now and can't connect to my Ipad.  My nephew, who did the w

  • ITunes Match not playing.

    Since Feb 12, I have not been able to play "stream" my songs on my iMac. They just keep skipping over to the next song with nothing playing. When I try and click on the download button, I am given the error code 5556. the only songs that play are the

  • Ibook G4 won't recognise Combo drive

    Hi there I have an iBook G4 12" 800Mhz , when I bought it off ebay it arrived with an issue - the computer doesnt see the combo drive, dvds don't mount, Apple dvd player app gives an error message saying it kind find the drive to play dvds. I have si