About Collection and ForAll

Dear Guru
1) I have some documents about collection of 10g
and example of Forall function.
2) Question: I have procedure called Test_ps
How to see the source code of the procedure
A : User_source
But i want to see how my parameter are there in procedure is there any option ?
Advance Thanks..

you can use DSEC <Procedure_Name> to see the list of arguments
PRAZY@11gR1> create or replace procedure test_proc(a number,b number) is
  2  begin
  3  null;
  4  end;
  5  /
Procedure created.
Elapsed: 00:00:00.01
PRAZY@11gR1> select text from user_source where name='TEST_PROC' order by line;
TEXT
procedure test_proc(a number,b number) is
begin
null;
end;
Elapsed: 00:00:00.01
PRAZY@11gR1> desc test_proc;
PROCEDURE test_proc
Argument Name                  Type                    In/Out Default?
A                              NUMBER                  IN
B                              NUMBER                  INRegards,
Prazy

Similar Messages

  • BULK COLLECT and FORALL with dynamic INSERT.

    Hello,
    I want to apply BULK COLLECT and FORALL feature for a insert statement in my procedure for performance improvements as it has to insert a huge amount of data.
    But the problem is that the insert statement gets generated dynamically and even the table name is found at the run-time ... so i am not able to apply the performance tuning concepts.
    See below the code
    PROCEDURE STP_MES_INSERT_GLOBAL_TO_MAIN
      (P_IN_SRC_TABLE_NAME                  VARCHAR2 ,
      P_IN_TRG_TABLE_NAME                  VARCHAR2 ,
      P_IN_ED_TRIG_ALARM_ID                 NUMBER ,
      P_IN_ED_CATG_ID                 NUMBER ,
      P_IN_IS_PIECEID_ALARM IN CHAR,
      P_IN_IS_LAST_RECORD IN CHAR
    IS
          V_START_DATA_ID                 NUMBER;
          V_STOP_DATA_ID                   NUMBER;
          V_FROM_DATA_ID                   NUMBER;
          V_TO_DATA_ID                       NUMBER;
          V_MAX_REC_IN_LOOP              NUMBER := 30000;
          V_QRY1         VARCHAR2(32767);
    BEGIN
                EXECUTE IMMEDIATE 'SELECT MIN(ED_DATA_ID), MAX(ED_DATA_ID) FROM '|| P_IN_SRC_TABLE_NAME INTO V_START_DATA_ID , V_STOP_DATA_ID;
                --DBMS_OUTPUT.PUT_LINE('ORIGINAL START ID := '||V_START_DATA_ID ||' ORIGINAL  STOP ID := ' || V_STOP_DATA_ID);
                V_FROM_DATA_ID := V_START_DATA_ID ;
                IF (V_STOP_DATA_ID - V_START_DATA_ID ) > V_MAX_REC_IN_LOOP THEN
                        V_TO_DATA_ID := V_START_DATA_ID + V_MAX_REC_IN_LOOP;
                ELSE
                       V_TO_DATA_ID := V_STOP_DATA_ID;
                END IF;
              LOOP
                    BEGIN
                 LOOP      
                            V_QRY1 := ' INSERT INTO '||P_IN_TRG_TABLE_NAME||
                            ' SELECT * FROM '||P_IN_SRC_TABLE_NAME ||
                            ' WHERE ED_DATA_ID BETWEEN ' || V_FROM_DATA_ID ||' AND ' || V_TO_DATA_ID;
                    EXECUTE IMMEDIATE V_QRY1;
    commit;
                                     V_FROM_DATA_ID :=  V_TO_DATA_ID + 1;
                            IF  ( V_STOP_DATA_ID - V_TO_DATA_ID > V_MAX_REC_IN_LOOP ) THEN
                                  V_TO_DATA_ID := V_TO_DATA_ID + V_MAX_REC_IN_LOOP;
                            ELSE
                                  V_TO_DATA_ID := V_TO_DATA_ID + (V_STOP_DATA_ID - V_TO_DATA_ID);
                            END IF;
                    EXCEPTION
                             WHEN OTHERS THEN.............
    ....................so on Now you can observer here that P_IN_SRC_TABLE_NAME is the source table name which we get as a parameter at run-time. I have used 2 table in the insert statement P_IN_TRG_TABLE_NAME (in which i have to insert data) and P_IN_SRC_TABLE_NAME(from where i have to insert data)
      V_QRY1 := ' INSERT INTO '||P_IN_TRG_TABLE_NAME||
                            ' SELECT * FROM '||P_IN_SRC_TABLE_NAME ||
                            ' WHERE ED_DATA_ID BETWEEN ' || V_FROM_DATA_ID ||' AND ' || V_TO_DATA_ID;
                    EXECUTE IMMEDIATE V_QRY1;now when i appy the bulk collect and forall feature i am facing the out of scope problem....see the code below ...
    BEGIN
                EXECUTE IMMEDIATE 'SELECT MIN(ED_DATA_ID), MAX(ED_DATA_ID) FROM '|| P_IN_SRC_TABLE_NAME INTO V_START_DATA_ID , V_STOP_DATA_ID;
                --DBMS_OUTPUT.PUT_LINE('ORIGINAL START ID := '||V_START_DATA_ID ||' ORIGINAL  STOP ID := ' || V_STOP_DATA_ID);
                V_FROM_DATA_ID := V_START_DATA_ID ;
                IF (V_STOP_DATA_ID - V_START_DATA_ID ) > V_MAX_REC_IN_LOOP THEN
                        V_TO_DATA_ID := V_START_DATA_ID + V_MAX_REC_IN_LOOP;
                ELSE
                       V_TO_DATA_ID := V_STOP_DATA_ID;
                END IF;
              LOOP
                    DECLARE
                     TYPE TRG_TABLE_TYPE IS TABLE OF P_IN_SRC_TABLE_NAME%ROWTYPE;
                     V_TRG_TABLE_TYPE TRG_TABLE_TYPE;
                     CURSOR TRG_TAB_CUR IS
                     SELECT * FROM P_IN_SRC_TABLE_NAME
                     WHERE ED_DATA_ID BETWEEN V_FROM_DATA_ID AND V_TO_DATA_ID;
                     V_QRY1 varchar2(32767);
                    BEGIN
                    OPEN TRG_TAB_CUR;
                    LOOP
                    FETCH TRG_TAB_CUR BULK COLLECT INTO V_TRG_TABLE_TYPE LIMIT 30000;
                    FORALL I IN 1..V_TRG_TABLE_TYPE.COUNT
                    V_QRY1 := ' INSERT INTO '||P_IN_TRG_TABLE_NAME||' VALUES V_TRG_TABLE_TYPE(I);'
                    EXECUTE IMMEDIATE V_QRY1;
                    EXIT WHEN TRG_TAB_CUR%NOTFOUND;
                    END LOOP;
                    CLOSE TRG_TAB_CUR;
                            V_FROM_DATA_ID :=  V_TO_DATA_ID + 1;
                            IF  ( V_STOP_DATA_ID - V_TO_DATA_ID > V_MAX_REC_IN_LOOP ) THEN
                                  V_TO_DATA_ID := V_TO_DATA_ID + V_MAX_REC_IN_LOOP;
                            ELSE
                                  V_TO_DATA_ID := V_TO_DATA_ID + (V_STOP_DATA_ID - V_TO_DATA_ID);
                            END IF;
                    EXCEPTION
                             WHEN OTHERS THEN.........so on
    But the above code is not helping me ,  what i am doing wrong ??? how can i tune this dynamically generated statement to use bulk collect for better performace ......
    Thanks in Advance !!!!

    Hello,
    a table name cannot be bind as a parameter in SQL, this wont't compile:
    EXECUTE IMMEDIATE ' INSERT INTO :1 VALUES ......
    USING P_IN_TRG_TABLE_NAME ...but this should work:
    EXECUTE IMMEDIATE ' INSERT INTO ' || P_IN_TRG_TABLE_NAME || ' VALUES ......You cannot declare a type that is based on a table which name is in a variable.
    PL/SQL is stronly typed language, a type must be known at compile time, a code like this is not allowed:
    PROCEDURE xx( src_table_name varchar2 )
    DECLARE
       TYPE tab IS TABLE OF src_table_name%ROWTYPE;
      ...This can be done by creating one big dynamic SQL - see example below (tested on Oracle 10 XE - this is a slightly simplified version of your procedure):
    CREATE OR REPLACE
    PROCEDURE stp1(
      p_in_src_table_name                  VARCHAR2 ,
      p_in_trg_table_name                  VARCHAR2 ,
      v_from_data_id     NUMBER := 100,
      v_to_data_id       NUMBER := 100000
    IS
    BEGIN
      EXECUTE IMMEDIATE q'{
      DECLARE
         TYPE trg_table_type IS TABLE OF }' || p_in_src_table_name || q'{%ROWTYPE;
         V_TRG_TABLE_TYPE TRG_TABLE_TYPE;
         CURSOR TRG_TAB_CUR IS
         SELECT * FROM }' || p_in_src_table_name ||
         q'{ WHERE ED_DATA_ID BETWEEN :V_FROM_DATA_ID AND :V_TO_DATA_ID;
      BEGIN
          OPEN TRG_TAB_CUR;
          LOOP
                FETCH TRG_TAB_CUR BULK COLLECT INTO V_TRG_TABLE_TYPE LIMIT 30000;
                FORALL I IN 1 .. V_TRG_TABLE_TYPE.COUNT
                INSERT INTO }' || p_in_trg_table_name || q'{ VALUES V_TRG_TABLE_TYPE( I );
                EXIT WHEN TRG_TAB_CUR%NOTFOUND;
          END LOOP;
          CLOSE TRG_TAB_CUR;
      END; }'
      USING v_from_data_id, v_to_data_id;
      COMMIT;
    END;But this probably won't give any performace improvements. Bulk collect and forall can give performance improvements when there is a DML operation inside a loop,
    and this one single DML operates on only one record or relatively small number of records, and this DML is repeated many many times in the loop.
    I guess that your code is opposite to this - it contains insert statement that operates on many records (one single insert ~ 30000 records),
    and you are trying to replace it with bulk collect/forall - INSERT INTO ... SELECT FROM will almost alwayst be faster than bulk collect/forall.
    Look at simple test - below is a procedure that uses INSERT ... SELECT :
    CREATE OR REPLACE
    PROCEDURE stp(
      p_in_src_table_name                  VARCHAR2 ,
      p_in_trg_table_name                  VARCHAR2 ,
      v_from_data_id     NUMBER := 100,
      v_to_data_id       NUMBER := 100000
    IS
    V_QRY1 VARCHAR2(32767);
    BEGIN
          V_QRY1 := ' INSERT INTO '||   P_IN_TRG_TABLE_NAME ||
                    ' SELECT * FROM '|| P_IN_SRC_TABLE_NAME ||
                    ' WHERE ed_data_id BETWEEN :f AND :t ';
          EXECUTE IMMEDIATE V_QRY1
          USING V_FROM_DATA_ID, V_TO_DATA_ID;
          COMMIT;
    END;
    /and we can compare both procedures:
    SQL> CREATE TABLE test333
      2  AS SELECT level ed_data_id ,
      3            'XXX ' || LEVEL x,
      4            'YYY ' || 2 * LEVEL y
      5  FROM dual
      6  CONNECT BY LEVEL <= 1000000;
    Table created.
    SQL> CREATE TABLE test333_dst AS
      2  SELECT * FROM test333 WHERE 1 = 0;
    Table created.
    SQL> set timing on
    SQL> ed
    Wrote file afiedt.buf
      1  BEGIN
      2     FOR i IN 1 .. 100 LOOP
      3        stp1( 'test333', 'test333_dst', 1000, 31000 );
      4     END LOOP;
      5* END;
    SQL> /
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:22.12
    SQL> ed
    Wrote file afiedt.buf
      1  BEGIN
      2     FOR i IN 1 .. 100 LOOP
      3        stp( 'test333', 'test333_dst', 1000, 31000 );
      4     END LOOP;
      5* END;
    SQL> /
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:14.86without bulk collect ~ 15 sec.
    bulk collect version ~ 22 sec. .... 7 sec longer / 15 sec. = about 45% performance decrease.

  • How to use Bulk Collect and Forall

    Hi all,
    We are on Oracle 10g. I have a requirement to read from table A and then for each record in table A, find matching rows in table B and then write the identified information in table B to the target table (table C). In the past, I had used two ‘cursor for loops’ to achieve that. To make the new procedure, more efficient, I would like to learn to use ‘bulk collect’ and ‘forall’.
    Here is what I have so far:
    DECLARE
    TYPE employee_array IS TABLE OF EMPLOYEES%ROWTYPE;
    employee_data  employee_array;
    TYPE job_history_array IS TABLE OF JOB_HISTORY%ROWTYPE;
    Job_history_data   job_history_array;
    BatchSize CONSTANT POSITIVE := 5;
    -- Read from File A
    CURSOR c_get_employees IS
             SELECT  Employee_id,
                       first_name,
                       last_name,
                       hire_date,
                       job_id
              FROM EMPLOYEES;
    -- Read from File B based on employee ID in File A
    CURSOR c_get_job_history (p_employee_id number) IS
             select start_date,
                      end_date,
                      job_id,
                      department_id
             FROM JOB_HISTORY
             WHERE employee_id = p_employee_id;
    BEGIN
        OPEN c_get_employees;
        LOOP
            FETCH c_get_employees BULK COLLECT INTO employee_data.employee_id.LAST,
                                                                              employee_data.first_name.LAST,
                                                                              employee_data.last_name.LAST,
                                                                              employee_data.hire_date.LAST,
                                                                              employee_data.job_id.LAST
             LIMIT BatchSize;
            FORALL i in 1.. employee_data.COUNT
                    Open c_get_job_history (employee_data(i).employee_id);
                    FETCH c_get_job_history BULKCOLLECT INTO job_history_array LIMIT BatchSize;
                             FORALL k in 1.. Job_history_data.COUNT LOOP
                                            -- insert into FILE C
                                              INSERT INTO MY_TEST(employee_id, first_name, last_name, hire_date, job_id)
                                                                values (job_history_array(k).employee_id, job_history_array(k).first_name,
                                                                          job_history_array(k).last_name, job_history_array(k).hire_date,
                                                                          job_history_array(k).job_id);
                                             EXIT WHEN job_ history_data.count < BatchSize                        
                             END LOOP;                          
                             CLOSE c_get_job_history;                          
                     EXIT WHEN employee_data.COUNT < BatchSize;
           END LOOP;
            COMMIT;
            CLOSE c_get_employees;
    END;
                     When I run this script, I get
    [Error] Execution (47: 17): ORA-06550: line 47, column 17:
    PLS-00103: Encountered the symbol "OPEN" when expecting one of the following:
       . ( * @ % & - + / at mod remainder rem select update with
       <an exponent (**)> delete insert || execute multiset save
       merge
    ORA-06550: line 48, column 17:
    PLS-00103: Encountered the symbol "FETCH" when expecting one of the following:
       begin function package pragma procedure subtype type use
       <an identifier> <a double-quoted delimited-identifier> form
       current cursorWhat is the best way to code this? Once, I learn how to do this, I apply the knowledge to the real application in which file A would have around 200 rows and file B would have hundreds of thousands of rows.
    Thank you for your guidance,
    Seyed

    Hello BlueShadow,
    Following your advice, I modified a stored procedure that initially was using two cursor for loops to read from tables A and B to write to table C to use instead something like your suggestion listed below:
    INSERT INTO tableC
    SELECT …
    FROM tableA JOIN tableB on (join condition).I tried this change on a procedure writing to tableC with keys disabled. I will try this against the real table that has primary key and indexes and report the result later.
    Thank you very much,
    Seyed

  • Binds collections and forall statement

    version 9.2.0.6
    I would like to make this more dynamic in that the collection cList can be used only once and be used by all bind variables. The variable stmt would be dynamically generated in that case it would insert into any number of tables.
    Can this be done?
    Is this feature available in a newer version of Oracle?
    create table d2 nologging as
    select
      rownum rn
      ,substr(dbms_random.string('x',5),1,10) v1
      ,sysdate d1
      ,round(dbms_random.value(1,10)) n1
      ,substr(dbms_random.string('x',5),1,10) v2
      ,rpad(' ',4000,' ') as concat
    from dual connect by level <= 100;
    -- no rows for our test
    create table d3 nologging as
    select
    from d2 where 1 = 2;
    -- setup for our test
    update d2
    set image = rpad(nvl(to_char(rn),' '),10,' ')                                
             || rpad(nvl(v1,' '),20,' ')                                         
             || rpad(nvl(to_char(d1,'DD-MON-YYYY HH24:MI:SS'),' '),34,' ')       
             || rpad(nvl(to_char(n1),' '),10,' ')                                
             || rpad(nvl(v2,' '),10,' ')                                         
    -- test got all locations right
    select
      to_number(rtrim(substr(image,1,10)))
      ,rtrim(substr(image,11,20))
      ,to_date(rtrim(substr(image,30,34)),'DD-MON-YYYY HH24:MI:SS')
      ,to_number(rtrim(substr(image,65,10))) AS n1
      ,rtrim(substr(image,75,10))
    from d2;
    -- here is where we do the work
    declare
    type charList is table of varchar2(4000);
    cList charList;
    d2l d2_list;
    errors NUMBER;
    dml_errors EXCEPTION;
    PRAGMA exception_init(dml_errors, -24381);
    sqlStmt varchar2(32000);
    cursor cur is select image from d2;
    bcLimit number := 23;
    begin
    sqlStmt := 'insert into d3 (rn,v1,d1,n1,v2)'
             || 'values (to_number(rtrim(substr(:a,1,10)))
                        ,rtrim(substr(:a,11,20))
                        ,to_date(rtrim(substr(:a,30,34)),''DD-MON-YYYY HH24:MI:SS'')
                        ,to_number(rtrim(substr(:a,65,10)))
                        ,rtrim(substr(:a,75,10)))';
    open cur;
    loop
      fetch cur bulk collect into cList limit bcLimit;
      exit when cList.count = 0;
      begin
       -- very very unfortunately the code is unable to have one using clause variable be applied to all bind variables
       -- note the number of cList uses having the bind variables all name the same does not help
       -- using only one gets a ORA-1008 error  :(
       FORALL i IN cList.FIRST..cList.LAST SAVE EXCEPTIONS execute immediate sqlstmt using cList(i),cList(i),cList(i),cList(i),cList(i);
       -- FORALL i IN cList.FIRST..cList.LAST SAVE EXCEPTIONS execute immediate sqlstmt using cList(i); --< DOES NOT WORK :(  I WISH IT WOULD!
      EXCEPTION
       WHEN dml_errors THEN
         errors := SQL%BULK_EXCEPTIONS.COUNT;
         dbms_output.put_line('number of errors is ' || errors);
         FOR i IN 1..errors LOOP
          dbms_output.put_line('Error ' || i || ' occurred during iteration ' || SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
          dbms_output.put_line('Could not insert ' || cList(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX));
          dbms_output.put_line(SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
         END LOOP;
      end;
    end loop;
    close cur;
    dbms_output.put_line('h2');
    end;
    /

    The CREATE TABLE you post for table D2 has no column called 'image'. It would help somewhat if you posted a working example.
    Also I am not clear why the INSERT INTO D3 statement in the anonymous block needs to be dynamic.

  • Extra overhead with Collection and List types

    The documentation says about Collection and List types :
    "There is extra overhead for Kodo to maintain collections where each
    element is not guaranteed to be unique."
    Why is it so ?
    Thanks in advance.
    Regards.

    We can make some optimizations when we know each element is unique.

  • Using bulk collect and for all to solve a problem

    Hi All
    I have a following problem.
    Please forgive me if its a stupid question :-) im learning.
    1: Data in a staging table xx_staging_table
    2: two Target table t1, t2 where some columns from xx_staging_table are inserted into
    Some of the columns from the staging table data are checked for valid entries and then some columns from that row will be loaded into the two target tables.
    The two target tables use different set of columns from the staging table
    When I had a thousand records there was no problem with a direct insert but it seems we will now have half a million records.
    This has slowed down the process considerably.
    My question is
    Can I use the bulk collect and for all functionality to get specific columns from a staging table, then validate the row using those columns
    and then use a bulk insert to load the data into a specific table.?
    So code would be like
    get_staging_data cursor will have all the columns i need from the staging table
    cursor get_staging_data
    is select * from xx_staging_table (about 500000) records
    Use bulk collect to load about 10000 or so records into a plsql table
    and then do a bulk insert like this
    CREATE TABLE t1 AS SELECT * FROM all_objects WHERE 1 = 2;
    CREATE OR REPLACE PROCEDURE test_proc (p_array_size IN PLS_INTEGER DEFAULT 100)
    IS
    TYPE ARRAY IS TABLE OF all_objects%ROWTYPE;
    l_data ARRAY;
    CURSOR c IS SELECT * FROM all_objects;
    BEGIN
    OPEN c;
    LOOP
    FETCH c BULK COLLECT INTO l_data LIMIT p_array_size;
    FORALL i IN 1..l_data.COUNT
    INSERT INTO t1 VALUES l_data(i);
    EXIT WHEN c%NOTFOUND;
    END LOOP;
    CLOSE c;
    END test_proc;
    In the above example t1 and the cursor have the same number of columns
    In my case the columns in the cursor loop are a small subset of the columns of table t1
    so can i use a forall to load that subset into the table t1? How does that work?
    Thanks
    J

    user7348303 wrote:
    checking if the value is valid and theres also some conditional processing rules ( such as if the value is a certain value no inserts are needed)
    which are a little more complex than I can put in a simpleWell, if the processing is too complex (and conditional) to be done in SQL, then doing that in PL/SQL is justified... but will be slower as you are now introducing an additional layer. Data now needs to travel between the SQL layer and PL/SQL layer. This is slower.
    PL/SQL is inherently serialised - and this also effects performance and scalability. PL/SQL cannot be parallelised by Oracle in an automated fashion. SQL processes can.
    To put in in simple terms. You create PL/SQL procedure Foo that processes SQL cursor and you execute that proc. Oracle cannot run multiple parallel copies of Foo. It perhaps can parallelise that SQL cursor that Foo uses - but not Foo itself.
    However, if Foo is called by the SQL engine it can run in parallel - as the SQL process calling Foo is running in parallel. So if you make Foo a pipeline table function (written in PL/SQL), and you design and code it as a thread-safe/parallel enabled function, it can be callled and used and executed in parallel, by the SQL engine.
    So moving your PL/SQL code into a parallel enabled pipeline function written in PL/SQL, and using that function via parallel SQL, can increase performance over running that same basic PL/SQL processing as a serialised process.
    This is of course assuming that the processing that needs to be done using PL/SQL code, can be designed and coded for parallel processing in this fashion.

  • Empty Collections and Empty Tags

    It seems that empty collections from a cast or cursor result in an empty tag. For example, the following sql:select work.work_id medlineid,
    cursor(
    select
    databankname,
    db.accessionnumberlist_ref.accessionnumberlist accessionnumberlist
    from table(dbl.databanks) db
    order by databankname) databanklist,
    cast( multiset (
    select chemical_t(
    wrkchm.cas_registry_number,
    wrkchm.term)
    from work_chemicals wrkchm
    where wrkchm.work_id=work.work_id
    order by wrkchm.term) as chemicals_t) chemicallist
    from
    works work,
    databanklist_t_v dbl
    where
    work.work_id = 96264942
    and work.work_id = dbl.work_id(+)results in the following XML:<medlinecitationset>
    <medlinecitation num="1">
    <medlineid>96264942</medlineid>
    <databanklist/>
    <chemicallist/>
    </medlinecitation>
    </medlinecitationset>Is there a way to not have these empty tags appear?
    Thanks! -- John.
    null

    David, this is about understanding the use of, and differencies between tags and collections. This is a bit hard for many new users.
    First of all searching for collections and tags can *not* be done simultaneously. You can either work with one collection only, or you can search for pictures with one or more tags.
    Next collections should be used as either temporary work sets or for special occasions like specific vacations, trips or birthdays, e.g. "Anna 5 years". You say you have a collection named "Churches". I think would have made a TAG called "Churches" instead, because a tag is for general searches that can be combined. On the other hand I might have made a collection called "Church visits July 2005" or "Summer vacation 2005" or the like.
    Another difference is that pictures in a collection can be sorted manually by drag & drop, while pictures found via tags always are shown in the order chosen in the Photo Browser Arrangement box shown bottom left in the Organizer.

  • It is possible to use a VOD HTTP Stream in an iTunes U Collection and/or Course?

    We wish to better comply with TEACH Act guidelines by using VOD (video on demand as opposed to real-time streaming) HTTP Streaming where an instructor is asserting educational fair use of copyrighted material.  The key component in TEACH guidelines is that the student not be able to retain the materials beyond the duration of the course.  Thus, VOD HTTP Streaming will meet this specification nicely and is supported across all of iOS and MacOS X.
    Thus, the question: It is possible to use a VOD HTTP Stream in an iTunes U Collection and/or Course?

    I knew about that, but my question is, if it is possible to use an europe power adapter.
    Because i dont want to a carry around an power adapter and a plugin adapter.
    I hope you understand what i mean.
    Sorry for my english
    Best.

  • BULK In-BIND and FORALL

    Hi All,
    Could someone help me in solving the error 'DML statement without BULK In-BIND cannot be used inside FORALL'. I am getting the error when running the following query.
    DECLARE
    v_seq_row_id NUMBER;
    TYPE ap_addr_tt IS TABLE OF IN_EIM_ADDR_PER.AP_ADDR%TYPE;
    TYPE ap_addr_name_tt IS TABLE OF IN_EIM_ADDR_PER.AP_ADDR_NAME%TYPE;
    TYPE ap_disc_flg_tt IS TABLE OF IN_EIM_ADDR_PER.AP_DISACLEANSE_FLG%TYPE;
    TYPE ap_name_lock_flg_tt IS TABLE OF IN_EIM_ADDR_PER.AP_NAME_LOCK_FLG%TYPE;
    TYPE ap_pre_flg_tt IS TABLE OF IN_EIM_ADDR_PER.AP_PREMISE_FLG%TYPE;
    coll_v_AP_ADDR ap_addr_tt;
    coll_v_AP_ADDR_NAME ap_addr_tt;
    coll_v_AP_DISACLEANSE_FLG ap_disc_flg_tt;
    coll_v_AP_NAME_LOCK_FLG ap_name_lock_flg_tt;
    coll_v_AP_PREMISE_FLG ap_pre_flg_tt;
    BEGIN
    SELECT
    DISTINCT(AP_ADDR),
    AP_ADDR_NAME,
    AP_DISACLEANSE_FLG,
    AP_NAME_LOCK_FLG,
    AP_PREMISE_FLG
    BULK COLLECT INTO
    coll_v_AP_ADDR,
    coll_v_AP_ADDR_NAME,
    coll_v_AP_DISACLEANSE_FLG,
    coll_v_AP_NAME_LOCK_FLG,
    coll_v_AP_PREMISE_FLG
    FROM
    IN_EIM_ADDR_PER;
    FORALL indx IN coll_v_AP_ADDR.FIRST.. coll_v_AP_ADDR.LAST
    SELECT seq_dm_row_id.NEXTVAL INTO v_seq_row_id FROM DUAL;
    /* for test only - more columns from will be included*/
    INSERT INTO SIEBEL.EIM_ADDR_PER
    (ROW_ID) VALUES (v_seq_row_id );
    END;
    I am new to collections and used cursors most of the time. It would be great if someone help me in solving this issue, which I am trying for looong time.
    Thanks.
    Yar

    Hi,
    I like to get clarified, Instead of the declaring individual variables can I try some like below. Could anyone advice me on this.
    TYPE in_tbl_col_type_rec IS RECORD (
    ap_addr_tt IN_EIM_ADDR_PER.AP_ADDR%TYPE,
    ap_addr_name_tt IN_EIM_ADDR_PER.AP_ADDR_NAME%TYPE,
    ap_disc_flg_tt IN_EIM_ADDR_PER.AP_DISACLEANSE_FLG%TYPE,
    ap_name_lock_flg_tt IN_EIM_ADDR_PER.AP_NAME_LOCK_FLG%TYPE,
    ap_pre_flg_tt IN_EIM_ADDR_PER.AP_PREMISE_FLG%TYPE);
    TYPE in_tbl_col_type_tbl IS TABLE OF in_tbl_col_type_rec
    INDEX BY PLS_INTEGER;
    v_in_tbl_col in_tbl_col_type_rec;
    And I am trying to use,
    FORALL indx IN v_in_tbl_col.FIRST.. v_in_tbl_col.LAST
    which is giving the error 'component 'FIRST' must be declared'.
    Thanks,
    Yar

  • Installing cs3 master collection and cs5 production premium on windows 7 machine

    I have a windows 7 ultimate machine that I would like to install CS3 Master Collection on. I would then like to upgrade the Production Premium programs to CS5.
    I have the install discs for both. Any suggestions for how to go about doing this would be greatly appreciated.
    Thanks!

    Tahseen,
    Thanks for the quick reply!
    Both CS3 Master Collection and CS5 Production Premium are full installs, neither is an upgrade. I have serial numbers for both.
    Machine previously had CS4 Production Premium installed on it, that has been uninstalled.
    Should I install CS3 Master Collection then install CS5 Production Premium? If so, do I need to remove the CS3 versions of programs included in Production Premium before installing CS5 Production Premium?
    Thanks again!

  • Once more about "black" and "white" file lists.

    Hello everyone!
    I've got a task to find all unauthorized  executables on all workstations in domain. The good point is that workstations are identical to each other (both hard and soft), bad point is that I have to find the existence of this files on HDDs, not their
    launches. And I have to use SCCM 2012 SP1 for reporting as well. That's why I cannot use the AppLocker.
    Well, what I've decided to do is to take one of workstations as the sample (SW - sample workstation). All updates, patches, etc. are provided at SW first, then are spread on whole domain. All .exe (and another file masks) on SW are presumed as "white",
    all others on workstations are presumed as "black" ones.What I need now is to compare white-list from SW with file list from every computer in collection.
    There already exists almost ready-to-use report that I need, but it has to be modified. Unfortunately, my knowledge of MS SQL is somewhere below zero (maybe absolute zero, -274C :) ). Thats,s why I'm asking for help. I've tried to find some articles about
    creating or modifying reports, but most of them are the same: "Open Report Builder, now copy and paste there the sample query from below. Wonder what a pretty report  you've got!"
    The report is "Compare software inventory on two computers". What modifications do I need:
    - Compare not "Computer name - Computer name" but "Computer name - Select a collection"
    - Exclude files from white-list (from SW) from report.
    - Exclude size, version and time check - only existence and (maybe) the difference in path..
    - Group by machine name.
    Maybe instead of ready query you can advice me some good article like "Composing reports in Report Builder for absolute newbies", I'll appreciate it very much as well.
    Thank you for your time.
    Sincerely, Alexey

    Hello, Daniel!
    Thank you very much for your answer it was really helpful.
    I really would like to delegate this report to programmers department but the problem is that they know nothing about SCCM, so I should explain to them what is SCCM, what is 'device collection' and all other things. Moreover, I've managed to find the list
    of functions for SCCM 2012, but I didn't find the list of SQL views for it, found only for SCCM 2007 and I'm not sure that it will suit for 2012.
    Well, I'm not too old yet to start learning something new :) , so I'll try to deal with this report myself.
    Thank you again for your help.
    Sincerely, Alexey.

  • Best practices for pass collections and to navigate between 2 view endlessl

    Hello, I have a doubt about efficiency and optimization of memory in this case. I have a managedBean for to show a activities´s list, then I can select one activity and the application redirects another view. This view is controlled for another managedBean for to show the specificied activity.
    My idea is pass the collection and the id of specificied activity to he second managedBean, and since second managedBean pass the collection to the first managedBean.
    I had thought pass properties by request and retrieve in the second bean, but I am not sure wich scope to usea in both bean. Because, the first bean pass collection to the first again.
    I also thought to use SessionScope in both bean, but I doubt about efficiency of memory in this case.
    How to pass parameters is not yet defined:
    -Using h:link and attributes
    - Using setPropertyactionListener between both bean
    -Others who do not know
    First managedBean (show list)
    @ManagedBean(name="actividades")
    @ViewScoped I'm not sure which scope to use
    public class ActividadesController implements Serializable {
         private static final long serialVersionUID = 1L;
         private final static Logger logger=Logger.getLogger(ActividadesController.class);
         private List<Actividad> listado; All activities
         @ManagedProperty(value="#{actividadBO}")
         private ActividadBO actividadBo;
         @ManagedProperty(value="#{asociaciones}")
         private AsociacionController asociacionController;
    /** methods **/
    Second managedBean (specified activity)
    @ManagedBean(name="actV")
    @ViewScoped I'm not sure which scope to use
    public class ActividadView implements Serializable {
         private static final long serialVersionUID = 1L;
         private Actividad actividad;
         private String comentario;
    private List<Actividad> listado; All activities for to avoid having to search again
         @ManagedProperty(value="#{actividadBO}")
         private ActividadBO actividadBo;
         private Integer idActividad;
         @PostConstruct
         public void init(){
              //actividad=actividadBo.get(idActividad);
              actividad=actividadBo.get(idActividad);
              actualizarComentarios(actividad.getIdActividad());
              actualizarAdjuntos(actividad.getIdActividad());
    /** methods **/
    Any suggestions??
    Kind regards.

    Hello, I have a doubt about efficiency and optimization of memory in this case. I have a managedBean for to show a activities´s list, then I can select one activity and the application redirects another view. This view is controlled for another managedBean for to show the specificied activity.
    My idea is pass the collection and the id of specificied activity to he second managedBean, and since second managedBean pass the collection to the first managedBean.
    I had thought pass properties by request and retrieve in the second bean, but I am not sure wich scope to usea in both bean. Because, the first bean pass collection to the first again.
    I also thought to use SessionScope in both bean, but I doubt about efficiency of memory in this case.
    How to pass parameters is not yet defined:
    -Using h:link and attributes
    - Using setPropertyactionListener between both bean
    -Others who do not know
    First managedBean (show list)
    @ManagedBean(name="actividades")
    @ViewScoped I'm not sure which scope to use
    public class ActividadesController implements Serializable {
         private static final long serialVersionUID = 1L;
         private final static Logger logger=Logger.getLogger(ActividadesController.class);
         private List<Actividad> listado; All activities
         @ManagedProperty(value="#{actividadBO}")
         private ActividadBO actividadBo;
         @ManagedProperty(value="#{asociaciones}")
         private AsociacionController asociacionController;
    /** methods **/
    Second managedBean (specified activity)
    @ManagedBean(name="actV")
    @ViewScoped I'm not sure which scope to use
    public class ActividadView implements Serializable {
         private static final long serialVersionUID = 1L;
         private Actividad actividad;
         private String comentario;
    private List<Actividad> listado; All activities for to avoid having to search again
         @ManagedProperty(value="#{actividadBO}")
         private ActividadBO actividadBo;
         private Integer idActividad;
         @PostConstruct
         public void init(){
              //actividad=actividadBo.get(idActividad);
              actividad=actividadBo.get(idActividad);
              actualizarComentarios(actividad.getIdActividad());
              actualizarAdjuntos(actividad.getIdActividad());
    /** methods **/
    Any suggestions??
    Kind regards.

  • Required account rights for Alert and Performance/Topology collection and operations SDK

    Hi,
    My question is with regards to required user role privileges for performing certain operations using Operations Manager 2007 R2 SDK.
    - Registering an internal connector to MS SCOM for alert subscription:
    http://msdn.microsoft.com/en-us/library/bb437580.aspx
    - Collection and acknowledging (or closing) of alerts
    http://msdn.microsoft.com/en-us/library/bb424130.aspx
    http://msdn.microsoft.com/en-us/library/hh327168.aspx
    Based on experience and this article (http://technet.microsoft.com/en-us/library/hh212758.aspx) on how to configure a product connector subscription I'm guessing
    that user account needs to have Operations Manager Administrators user role privileges, however I was unable to find this documented in context of SDK.
    Are requirements the same for GetMonitoringPerformanceData and GetConfigurationGroups methods?
    http://msdn.microsoft.com/en-us/library/microsoft.enterprisemanagement.monitoring.monitoringperformancedatareader.getmonitoringperformancedata.aspx
    http://msdn.microsoft.com/en-us/library/dd848560.aspx
    Thank you and kind regards,
    Zsolt

    Hi,
    As far as I know, to close an alert the user should be at least an Operator role. Please refer to the below article to get more information about SCOM user role profiles:
    Operations Associated with User Role Profiles
    http://technet.microsoft.com/en-us/library/hh872885.aspx
    Regards,
    Yan Li
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • Book excerpt about Collections

    http://java.sun.com/developer/Books/javaprogramming/javaobjects/ch06final.pdf
    Nowhere in this free chapter does the author advise to declare Collections by specifying the least specialized type possible
    it's always something like :
    ArrayList arrayList = new ArrayList();
    // using Collection methods only, like "add()"...By doing so, aren't we losing one of the most interesting aspect of Collections : designing by contract and being able to swap implementations as the needs change ?
    Do you think this is irrelevant in a chapter about collections but belongs to a pure OO chapter ?
    Just wondering...

    I've only skipped the chapter, so I might miss anything. But I'll give you my two Euro-Cents nevertheless:
    - I think it should be mentioned in the chapter, even 'though that chapter obviously is not about that specific concept. More importantly the chapter should really use that paradigm throughout it's example code. I think in this case giving correct examples is much better than repeating the message again and again.
    - The chapter does mention using a simple wrapper about the list to hide away the use of the concrete list implementation in favour of a more business-orientet interface (Transcript+TranscriptEntry vs. ArrayList<TranscriptEntry>). IMO that is another approach to the same "problem".

  • Is there another way of getting apps from the appstore without putting your credit card number in, ive heard about the itunes gift card thing can anybody just give me more info about that and how i can buy free things free things from the appstorepls help

    Is there another way of getting apps from the appstore without putting your credit card number in, ive heard about the itunes gift card thing can anybody just give me more info about that and how i can buy free things free things from the appstore...pls help as im only a teenager and have no credit credit and my parents dont trust me with theres and they dont care about the fact that you can set up a password/.... PLEASE SOMEONE HELP I WILL BE SO GRATEFUL... And i would really like to get the iphone 4 but if there is no way of etting apps without your credit number then i would have to get a samsung galaxy s3 maybe ...

    You can set up an Apple ID without a credit card.
    Create iTunes Store account without credit card - Support - Apple - http://support.apple.com/kb/ht2534

Maybe you are looking for