Returning composite datatype(record) to an SQL Query

I have a function called get_customer_address() that takes customer id and returns the customer address as a record type.
TYPE cust_address_type IS RECORD
(address1 VARCHAR2(25),
address2 VARCHAR2(25),
city VARCHAR2(25),
zipcode VARCHAR(10),
STATE VARCHAR(10));
cust_address cust_address_type;
My function is returning cust_address.
I want to modify below exising query and call this function from the query to get address.
select cust_id, address1, address2, city, zipcode from customer_table;
Instead of using address1, address2, city, zipcode if I want to the record type variable cust_id returned from the function, can I use it in my query? How do I modify the above query to call the function get_customer_address and get the same values as in the above query?

To add to Elic's comment - PL/SQL record structures can be defined as SQL objects, as long as SQL data types are used and not non-supported PL/SQL types like boolean.
E.g. create or replace type TCustAddress is object
(  address1 VARCHAR2(25),
   address2 VARCHAR2(25),
   city     VARCHAR2(25),
   zipcode  VARCHAR2(10),
   state    VARCHAR2(10)
);This provides a lot more flexibility than using PL/SQL record types. This is essentially an object class definition - and you can add constructors and methods to it.
It works seamlessly across both SQL and PL/SQL.

Similar Messages

  • Returning 25th to 40th result of SQL query, do I use a cursor?

    I have a complex SQL query that returns ALL the results I am looking for. I would to be able to only return the Nth to Nth result, like just the 50th to 70th record counts (assuming there is a sort by in the statement so it always returns in the same order.)
    I thought of using a cursor and checking %ROWCOUNT and only returning the proper rows, but that seemed like it would be inefficient. I could do the same on my front end (PHP 4.0.6) relatively easily, but that would be a really inefficient way to retrieve 20 records from a query with 1000+ records returned.

    Thanks, the links were helpful.
    Since rowcount ignores my order by clause, I have attempted to find ways to overcome this. I have tried using the rowcount method by recreating my tables as index-orginized with an index on the column that I need to be ordered by. As a result of this, I have come accross two problems.
    1. then index does not seem to update the order when I update the column. The column being indexed is a date type. The values added are usually sysdate, so although new elements are added properly, updating old ones does not change their index position.
    2. I really need to access the items from most recent to oldest, thus desc. Since I am returning by rowcount, this makes it difficult. The following SQL is the best I can come up with and requires the output to be looped in reverse for display in the correct order:
    select postid, subject, to_char(lastmod, 'Month FMDD, YYYY HH')||':'||to_char(lastmod, 'MIam'), name from (select t.postid, t.subject, t.lastmod, r.name, rownum ro from forumtopic t, forumrooms r where t.roomid = '1000668' and t.roomid = r.roomid and r.useraccess = '1') where ro between ((select count(*) from forumtopic subt where subt.roomid = '1000668')-40) and ((select count(*) from forumtopic subt where subt.roomid = '1000668')-25);

  • How to compare a boolean value returned from a function in a sql query

    Hi all
    i have a function which return boolean true or false.
    mean while i am writing a sql query which should check this function and will return a result set only when it is true. how will i use a function which returns boolean in a sql query..
    thanks in advance'
    Hari

    I don't think this is possible - i'm not sure. Can you post your function script? The reason why am i asking this is --
    satyaki>set serveroutput on
    satyaki>
    satyaki>
    satyaki>
    satyaki>create or replace function test_satf(emno in number)
      2  return boolean
      3  is
      4    v_cnt   number(5);
      5    v_flg   boolean;
      6  begin
      7    select count(*)
      8    into v_cnt
      9    from emp
    10    where empno = emno;
    11   
    12    if v_cnt = 1 then
    13       v_flg := TRUE;
    14    else
    15       v_flg := FALSE;
    16    end if;
    17   
    18    return v_flg;
    19  exception
    20    when others then
    21      v_flg := FALSE;
    22   return v_flg;
    23  end;
    24  /
    Function created.
    satyaki>
    satyaki>
    satyaki>
    satyaki>
    satyaki>
    satyaki>desc emp;
    Name                                      Null?    Type
    EMPNO                                     NOT NULL NUMBER(4)
    ENAME                                              VARCHAR2(10)
    JOB                                                VARCHAR2(9)
    MGR                                                NUMBER(4)
    HIREDATE                                           DATE
    SAL                                                NUMBER(7,2)
    COMM                                               NUMBER(7,2)
    DEPTNO                                             NUMBER(2)
    satyaki>
    satyaki>
    satyaki>
    satyaki>select count(*) from emp;
      COUNT(*)
            14
    satyaki>
    satyaki>select empno,test_satf(empno)
      2  from emp;
    select empno,test_satf(empno)
    ERROR at line 1:
    ORA-06552: PL/SQL: Statement ignored
    ORA-06553: PLS-382: expression is of wrong type
    satyaki>select to_char(test_satf(empno))
      2  from emp;
    select to_char(test_satf(empno))
    ERROR at line 1:
    ORA-06552: PL/SQL: Statement ignored
    ORA-06553: PLS-382: expression is of wrong type
    satyaki>
    satyaki>create or replace function test_satf(emno in number)
      2  return varchar2
      3  is
      4    v_cnt   number(5);
      5    v_flg   varchar2(10);
      6  begin
      7    select count(*)
      8    into v_cnt
      9    from emp
    10    where empno = emno;
    11   
    12    if v_cnt = 1 then
    13       v_flg := 'TRUE';
    14    else
    15       v_flg := 'FALSE';
    16    end if;
    17   
    18    return v_flg;
    19  exception
    20    when others then
    21      v_flg := 'FALSE';
    22   return v_flg;
    23  end;
    24  /
    Function created.
    satyaki>
    satyaki>
    satyaki>select test_satf(empno)
      2  from emp;
    TEST_SATF(EMPNO)
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TRUE
    TEST_SATF(EMPNO)
    TRUE
    TRUE
    TRUE
    14 rows selected.Or, may be i'm missing something.
    Regards.
    Satyaki De.

  • Need to return CLOB as String type from SQL query

    I have a table that contains a CLOB column, which should be accessible to a JDBC client (JReports) that does not understand how to extract CLOB from a result set.
    A possible workaround would be to translate the CLOB type into a normal string on the database side as part of the SQL query (or a view), so that the client can handle it. For that to work, we would need a type conversion within the query itself.
    Rather then
    SELECT clob_column FROM my_table
    we would need something like
    SELECT to_char(clob_column) FROM my table
    Unfortunately to_char does not work, but possibly there are other ways to achieve it.
    null

    Hi Christo
    Works fine. Just had to change the parameter order:
    DBMS_LOB.substr(clob_column,4000,1) converts the CLOB to a VARCHAR
    Thanks a lot,
    Thomas
    null

  • Pl-sql composite datatype-record problem!!

    Hello
    I am using hr schema tables and I intend to display first_name,last_name and hire date of President.
    When I am doing join I am facing errors
    following is my code
    /* Formatted on 2009/11/23 15:19 (Formatter Plus v4.8.8) */
    DECLARE
    e1 hr.employees%ROWTYPE;
    BEGIN
    SELECT *
    INTO e1
    FROM hr.employees, hr.jobs
    WHERE hr.employees.job_id = hr.jobs.job_id
    AND hr.jobs.job_title = 'President';
    DBMS_OUTPUT.put_line (e1.first_name);
    DBMS_OUTPUT.put_line (e1.last_name);
    DBMS_OUTPUT.put_line (e1.hire_date);
    END;
    and following are the errors
    ORA-06550: line 7, column 6:
    PL/SQL: ORA-00947: not enough values
    ORA-06550: line 5, column 4:
    PL/SQL: SQL Statement ignored
    Please help
    Thank You

    Hello,
    Instead of using
    SELECT *you need to select the right columns that HR.EMPLOYEES consist of if you want to use the rowtype or declare 3 variables.
    And always use proper aliases.
    Another 'dirty' way, without any declarations at all:
    hoek&XE> begin
      2    for e1 in ( select e.*
      3                from   hr.employees e
      4                ,      hr.jobs j
      5                where  e.job_id = j.job_id
      6                and    j.job_title = 'President'
      7              )
      8    loop
      9      dbms_output.put_line (e1.first_name);
    10      dbms_output.put_line (e1.last_name);
    11      dbms_output.put_line (e1.hire_date);
    12    end loop; 
    13  end;
    14  /
    Steven
    King
    17-06-1987 00:00:00

  • No of records in a sql query

    Hi ,
    I had a requirement where I need to generate certain sequence of numbers depending on the condition, eg If I have 20, then i need numbers 1 to 20, if have 12 then i need numbers 1 to 12 ans so on.....the point is I do not want to make use of any data dictionary view (user_objects, all_objects etc...)....
    How can I persue the above....
    Regards
    Vinayak Awasthi

    srry i am nt getting properly ur question.but it may be help u.
    SQL> declare
    2 i number;
    3 begin
    4 for i in 1..&a loop
    5 dbms_output.put_line(i);
    6 end loop;
    7 end;

  • DISTINCT RECORDS IN TABLE sql query

    Hi everybody
    Can I SELECT more than one column from a table and only have the first value distinct.

    If you want to have one column distinct with selection of more than one column, you can use Row_Number()
    Declare @VtABLE tABLE (id int, Name varchar)
    Insert into @vTable
    Select 1, 'A' Union All
    Select 2, 'A' Union All
    Select 3, 'B'
    ;with wcte as (
    Select Row_Number()over (Partition By Name Order by ID) RNO,id,name from @vTable
    ) Select * from wcte where RNO = 1
    Please visit my Blog for some easy and often used t-sql scripts
    My BizCard

  • Returning a SQL query result (resultset)

    Hello,
    I would like to return records from a SQL query but i can't return the resultset because the connection is already close.
    How can i return the records from a query if it contain different types (int, string)?
    I've been told to create another class which will hold the different variables and to return an instance of that class,
    how can i do it?
    Thanks,
    Raz

    what do you mean by "Whatsit"?
    i have this code:
    public class BestSeller {
    ...some functions...
    public void SearchNAME (BestSeller DB, String table,String name) {
              DB.connect();
              try{
                   Statement stmt = con.createStatement();
                   resultSet = stmt.executeQuery("Select * from "+table+" where name like'"+name+"'");
                   //CachedRowSet rset = new CachedRowSet();
                   while (DB.resultSet.next()) {
                        System.out.println(DB.resultSet.getInt("ID")+" is "+DB.resultSet.getString("name")+", "+...+", "+DB.resultSet.getString("quantity")+", "+DB.resultSet.getString("delivery_time"));
                   stmt.close();
                   con.close();
              catch (Exception err) {
                   System.out.println("ERROR: " + err);
         }I didn't put the Connect function in here, but it works and i get the records printed to the screen.
    I want to return all of the records (usually more then 1).
    Can you tell me how can i implement your code to my case?
    Thanks for the quick reply.
    Edited by: raz27 on Aug 5, 2008 2:20 PM

  • SQL Query Assistance Required for Full Outer Join

    Hi,
    Lets say I have two tables, i.e:
    TAB_A (colA1, colA2, colA3, colA4)
    TAB_B (colB1, colB2, colB3, colB4) where colB2 is a FK to colA1
    I am after an SQL query that will cater for both the following two scenarios.
    Scenario 1:
    TAB_A has two rows of data, i.e
    (1, ABC100, 1, WG_A)
    (2, ABC100, 2, WG_B)
    TAB_B has one row of data, i.e
    (1, 1, EMP_222, 4)
    I use the following SQL:
    select a.*, b.*
    from tab_a a FULL OUTER JOIN tab_b b ON (a.colA1 = b.colB2)
    where a.colA2 = 'ABC100'
    This returns two rows:
    1, ABC100, 1, WG_A, 1, 1, EMP_222, 4
    2, ABC100, 2, WG_B
    Now, what I actually would like my query to do is actually only return the row where a tab_b record exists, i.e, should only return one record:
    1, ABC100, 1, WG_A, 1, 1, EMP_222, 4
    This I can achieve by using a RIGHT OUTER JOIN instead above, but this causes issue with my scenario 2, which is the following set-up
    Scenario 2:
    TAB_A has only one row of data this time, i.e
    (2, ABC100, 2, WG_B)
    TAB_B has no data at all this time
    This returns no rows but I actually now want this single record from tab_a returned.
    I basically require an SQL query that will cater for both the top 2 scenarios, i.e, if a tab_b record exists from the outer join then only return this record along with tab_a data. If a tab_b record doesn't exist, then only return the tab_a record.
    Hope the above makes sense.
    Thanks.

    Is it what you need (not very elegant) ?
    SQL> select * from t_outer;
            ID CODE
             1 100
             2 100
    SQL> select * from t_inner;
    no rows selected
    SQL> with tab1 as (
      2  select a.id a_id, a.code, b.id b_id from t_outer a join t_inner b on
      3  (a.id = b.id and a.code = '100'))
      4  select * from tab1
      5  union all
      6  select a.*, null from t_outer a where not exists (
      7  select 1 from tab1)
      8  and a.code = '100'
      9  /
          A_ID CODE             B_ID
             1 100
             2 100
    SQL> insert into t_inner values(2);
    1 row created.
    SQL> with tab1 as (
      2  select a.id a_id, a.code, b.id b_id from t_outer a join t_inner b on
      3  (a.id = b.id and a.code = '100'))
      4  select * from tab1
      5  union all
      6  select a.*, null from t_outer a where not exists (
      7  select 1 from tab1)
      8  and a.code = '100'
      9  /
          A_ID CODE             B_ID
             2 100                 2
    Rgds.

  • Setting a Default Value in SQL Query Report

    Hello:
    We are using a SQL Query Report to provide a mass update to a table. We are using the apex.collection and having it display a number of records in a SQL Query Report for mass update. We have 14 columns in the report, for which the first 11 are populated via the collection. The remaining 3 are open for input but the individual making the updates. We've were able to provide a default value for 2 of the remaining 3 columns using a named LOV's - however the fourth column we would like to default a sysdate - but we are not successful.
    We've attempted many things but none seem to work, including adding that column to the collection and assigning it a default sysdate value. We've also tried changing the settings in the report attributes --> Tabular Form Elements by setting the Display as to: Datepicker, Default type to PL/SQL Expression and setting the default to sysdate. We've also tried caputuring a date on the previous page and loading it onto the report page and trying to default the date column to a page item default.
    I'd appreciate any help.
    Thanks
    FYI - we are using version 3.2

    use as default
    to_char(sysdate, 'dd/mm/yyy') where the format is your application or item date format

  • How to numberformat when using sql:query alogn with c:forEach JSTL tags

    Is there anyway to format the numeric values returned from the database when using <sql:query> alogn with <c:forEach> tags
    Here is my jsp code
    <sql:query..../>
    <c:forEach var="row" items="${queryResults.rows}">
    <tr>
    <td><c:out value="${row.COL1}" /></td>
    <td><c:out value="${row.COL2}" /></td>
    </tr>
    </c:forEach>
    Col1 values are numeric without any formats Eg: 1000, 10000, 1000000 etc.
    how can i format them to 1,000 , 10,1000 , 100,000 etc

    It is polite to mention what your answer was. These posts are not just here for you to ask questions, but to be used as a resource for other people to find answers. Saying "I solved it" with no details helps noone.
    I presume you discovered the JSTL <fmt:formatNumber> tag?

  • Variable to hold the number of records returned by the SQL Query.

    Hi folks,
    Is there any way to hold the number of records that could be returned by the SQL query we use to make a report?
    If so, please do come up with the answer.
    Cheers,
    PCZ.

    Hi there,
    Well, there is no actual business requirement.
    It is just the curiosity of mine.
    I would like to handle
    1) the number of records our report query returns or
    2) the query itself
    to write a better pl/sql code in any trigger/program unit, if any business logic beckons in future.
    Cheers,
    PCZ.

  • SQL- Query that return only one record

    Hello,
    is it possible to execute a pure SQL-Query which returns only one row although multiple rows are found.
    It is no problem in PL/SQL, but I have no idea if the same is also possible in SQL.
    thanks in advance
    Michael

    Why not? There are 4 records in this table, but only selected one.
    SQL> with t
      2  as
      3  (
      4     select '#%$@#$@$@##$' Addr from dual
      5     union all
      6     select '18 Jalan Scott' from dual
      7     union all
      8     select '18 Lemana St' from dual
      9     union all
    10     select '32-penstation' from dual
    11     union all
    12     select '99999999999' from dual
    13  )
    14  select addr
    15    from t
    16   where rownum =1
    17  /
    ADDR
    #%$@#$@$@##$
    SQL>Cheers
    Sarma.

  • Report- Pl/sql function returning sql query parsing page items as text?

    Hi Team,
    I am facing a strange issue .
    I have four page items namely
    1)JOB_CODE
    2)MIN_EXP
    3) MAX_EXP
    4) SOURCES1
    I have a report of the type "Pl/sql function returning sql query"
    declare
    v_sql varchar2(4000);
    begin
    if (:JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql:= 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:JOB_CODE IS NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:MIN_EXP IS NULL and :JOB_CODE IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years <= :MAX_EXP and V_REQUIREMENT = :JOB_CODE and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:MAX_EXP is null and :JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    end if;
    insert into query_list values (v_sql);
    insert into debug values (:JOB_CODE , :MIN_EXP , :MAX_EXP , :SOURCES1);
    return v_sql;
    end;
    Please not that I am insertin the query into a table called Query_list and the page item values into the table called Debug thru the pl/sql function which returns teh query.
    Now I select the data from the debug tables.
    select unique(query) from query_list;
    select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like '%:SOURCES1%'
    select * from debug;
    JOBCODE     MINEX     MAXEX     SOURCE
    21     1     10     donkeyHire
    And if I run the query in sql I get some records returned
    select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = 21 and v_experience_years >= 1 and v_experience_years <= and source like 'donkeyHire'
    V_CANDIDATE_ID     V_FNAME     V_CURRENT_EMPLOYER     V_EXPERIENCE_YEARS
    2     Vengu     Andale Tech     4
    But the record does not show up in the report!
    does this type of report parse page items as text?
    Why is it so?
    Waiting for an early reply.
    Thanks,
    venkat

    Venkat - You don't want to put ':SOURCES1' in quotes like that.
    Scott

  • PL/SQL function body returning SQL query - ORA-06502: PL/SQL: numeric or value error

    I'm attempting to dynamically generate a rather large SQL query via the "PL/SQL function body returning SQL query" report region option.  The SQL query generated will possibly be over 32K.  When I execute my page, I sometimes receive the "ORA-06502: PL/SQL: numeric or value error" which points to a larger than 32K query that was generated.  I've seen other posts in the forum related to this dynamic SQL size limitation issue, but they are older (pre-2010) and point to the 32K limit of the DNS (EXECUTE IMMEDIATE) and DBMS_SQL.  I found this post (dynamic sql enhancements in 11g) which discusses 11g no longer having the 32K size limitation for generating dynamic SQL.  Our environment is on 11gR2 and using ApEx 4.2.1.  I do not know which dynamic SQL method -- DNS or DBMS_SQL -- ApEx 4.2.1 is using.  Can someone clarify for me which dynamic SQL method ApEx uses to implement the "PL/SQL function body returning SQL query" option?
    As a test, I created a page on apex.oracle.com with a report region with the following source:
    declare
      l_stub varchar2(25) := 'select * from sys.dual ';
      l_sql  clob := l_stub || 'union all ';
      br     number(3) := 33;
    begin
      while length ( l_sql ) < 34000 loop
        l_sql := l_sql || l_stub || 'union all ';
      end loop;
      l_sql := l_sql || l_stub;
      for i in 1 .. ceil ( length ( l_sql ) / br ) loop
        dbms_output.put_line ( dbms_lob.substr ( l_sql, br, ( ( i - 1 ) * br ) + 1 ) );
      end loop;
      return l_sql;
    end;
    The dbms_output section is there to be able to run this code in SQL*Plus and confirm the size of the SQL is indeed larger than 32K.  When running this in SQL*Plus, the procedure is successful and produces a proper SQL statement which can be executed.  When I put this into the report region on apex.oracle.com, I get the ORA-06502 error.
    I can certainly implement a work-around for my issue by creating a 'Before Header' process on the page which populates an ApEx collection with the data I am returning and then the report can simply select from the collection, but according to documentation, the above 32K limitation should be resolved in 11g.  Thoughts?
    Shane.

    What setting do you use in your report properties - especially in Type and in Region Source?
    If you have Type="SQL Query", then you should have a SELECT statement in the Region Source. Something like: SELECT .... FROM ... WHERE
    According to the ERR-1101 error message, you have probably set Type to "SQL Query (PL/SQL function body returning SQL query)". In this situation APEX expects you to write a body of a PL/SQL function, that will generate the text of a SQL query that APEX should run. So it can be something like:
    declare
    mycond varchar2(4000);
    begin
    if :P1_REPORT_SEARCH is not null THEN
    mycond:='WHERE LAST_NAME like :P1_REPORT_SEARCH ||''%''';
    end if;
    return 'select EMPLOYEE_ID, FIRST_NAME, LAST_NAME from EMPLOYEES ' ||mycond;
    end;
    And for escaping - are you interested in escaping the LIKE wildcards, or the quotes?
    For escaping the wildcards in LIKE function so that when the user enters % you will find a record with % and not all functions, look into the SQL Reference:
    http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/conditions007.htm
    (You would than need to change the code of your function accordingly).
    If you are interested in escaping the quotes, try to avoid concatenating the values entered by the user into the SQL. If you can, use bind variables instead - as I have in my example above. If you start concatenating the values into the text of SQL, you are open to SQLInjection - user can enter anything, even things that will break your SQL. If you really need to allow users to choose the operator, I would probably give them a separate combo for operators and a textfield for values, than you could check if the operator is one of the allowed ones and create the condition accordingly - and than still use bind variable for inserting the filtering value into the query.

Maybe you are looking for

  • Off cycle payment is not getting updated in RT

    Hi Folks, we have an issue with off cycle payment, when we run LTA Payment to the employee, we are creating LTA wage type and amount in IT0267. As we run off cycle payroll, off cycle payrol is run with out the amount. It is not picking the amount and

  • Using Illustrator CS and being able to open the same file on two machines!

    Hi, Don't know if anybody can help? I have been using macs for many years and now we have moved over to windows! We are using a server (not sure which type? NT?) and we have found that with the Mac you could not have two users in the same file but wi

  • Drop down values from SAP

    Hi, Is it possible to get F4 help in webdynpro input fields. Thanks & Rgds, Atul Sable

  • Join file column with column in another database

    Hi all, I am trying to do a join between a column in a file I've imported into the BI Server with a column from a Oracle database table in the BI server, but I only get the error: *[NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occ

  • Weird iCal when travelling?

    Hi all, Have had a quick scan of the forum with no answers, so hoping someone might be able to help me. In the last couple of months I've travelled around the world with my MacBookPro, with latest updates on Tiger - I had a great time! However, somet