Regarding use of DDL in PL/SQL

Hai,
Can someone help me in understanding why we can't use DDLs in PL/SQL.
I will be really thankful to you.
Gursimran

> Can someone help me in understanding why we can't use DDLs in PL/SQL.
A simple analogy.
A DDL is like a recipe to make a meal. PL/SQL (Oracle) is like the kitchen in a restaurant.
What works best? Having an excellent menu of choice meals - having the kitchen work from a fixed list of known recipes?
Or allowing diners to sit down at a table, think about what they will like, and then supplying the kitchen with a "dynamic" recipe to prepare that meal?
The kitchen will have a problem coping with dynamic recipes. It may not have the right ingredient. It may not have sufficient ingredients. A single recipe may need to use the flame griller for an extended period of time, which means no other meals can be made while that recipe's meal is made. Etc.
Dynamically creating objects, or changing objects (all done via DDLs) is like a dynamic recipe. It may work. It may not work. Depends on whether other processes are using (locking) resources required to complete that DDL. It also means that code cannot refer to this object as it does not exist yet - it will only exist at some point of time while the code is busy running.
This is not a sensible approach. Yes, there are exceptions to this.. but exceptions are just that. Exceptions that is not the norm and not the standard.
There is no need to DDLs in PL/SQL 99% of the time. And that remaining 1% needs to be carefully looked at to determine whether it is indeed an exception.
The Oracle Kitchen works best when the meals to be made is from a known menu.

Similar Messages

  • Use realational operators in an SQL query??????

    does any one knows how to use realational operators in an SQL query??????
    i wud like to do something like
    select decode(2<3,sysdate,sydate +1) from dual
    but i know decode does not supports relational operators......
    thanx and Regards
    amyt

    You can use a CASE statement which does support relational operators, or if you must use DECODE, then you can use something like:
    SELECT DECODE(SIGN(2 - 3),-1,sysdate,sysdate - 1)
    FROM dual;The SIGN function returns -1 if the expression is < 0, 1 if the expression is > 0 and 0 if the expression is 0. This works for numeric comparisions. You can use the GREATEST or LEAST functions in a similar fashion for character comparisions.
    TTFN
    John

  • How to build a report in web Intelligence using Store procedure under Microsoft SQL Server 2000

    Post Author: ltkin
    CA Forum: WebIntelligence Reporting
    Hi,
    How to build a report in web Intelligence using Store procedure under Microsoft SQL Server 2000 ?
    Regards,

    Hi ltkin,
    Unfortunately, it is not possible in Xir2 to create Webi reports from stored procedures.
    Webi reports can only be created from Universe. So in Business Objects XIR3 we can create a special universe that enables Web Intelligence user's to access stored procedures residing in the database. This is the only way that Web Intelligence user's can access stored procedures.
    Please let me know if the above information helps.
    Regards,
    Pavan

  • How to use Temporary Table in PL-SQL

    In MySQL there is no Temporary table concept.
    So for intermediate calculation I have created a table as below
    create table SequenceTempTable
    SessionId VARCHAR(50),
    Sequence VARCHAR(500),
    CreatedDate DATE
    ) ENGINE=MEMORY;
    Whenever I invoke a SP, I load the data into SequenceTempTable using Session Id as below
    CREATE PROCEDURE `GetSequence`(
    IN Start_Date VARCHAR(25),
    IN End_Date VARCHAR(25)
    BEGIN
    SELECT UUID() INTO v_SessionId;
    INSERT INTO SequenceTempTable values (v_SessionId,'1,2,5,3',now());
    required code
    DELETE FROM SequenceTempTable WHERE SessionId = v_SessionId;
    COMMIT;
    END;
    i.e. I have created a table as temporary table (created once),
    and load the data using Session Id and once session specific intermediate computation done,
    I deleted the session specific data.
    Could you give me examples of How to use Temporary table in PL-SQL code with respect to my above example.
    Because I have gone through creating Temporary table but I stuck with use in PL-SQL. I mean to say Is there any need of creating table in advance before invoking SP.
    And one more thing as in MySQL temp table I created which is using MEMORY engine i.e. this table will always be in MEMORY so there is no need of writing data on disk.
    Regards
    Sanjeev

    Hi Sanjeev
    Read about GTT here
    http://www.oracle-base.com/articles/8i/TemporaryTables.php
    GTT always contains just session specific data. \
    In case you want to use the GTT in the same session again you can use option
    ON COMMIT PRESERVE ROWS;
    Or if it is used just once in the session use can use
    ON COMMIT DELETE ROWS;
    Do remember that for GTT the data of one session can not be accessed in other session.
    Also you can go away with Delete from GTT if not used again in same session.
    Regards
    Arun

  • Can we use multiple "pivot_for_clauses" in 11g SQL PIVOT

    Can we use multiple "pivot_for_clauses" in 11g SQL PIVOT. Below SQL is an example of what I am trying to do - In this case instead of using JOIN, can I have three pivot_for_clauses in the same sql?
    SQL:
    MERGE INTO Test_1 dest
    USING (SELECT P1.company_id,trunc(sysdate) as load_date,num_logins,......
    FROM (SELECT company_id,action_type_id
    FROM Testauditinfo_1 where trunc(audit_date_time)=trunc(sysdate)-1) a
    PIVOT (count(action_type_id) FOR (action_type_id) IN ((1) as num_logins,(2) as num_logouts,(61) as
    num_logins_from_mobile_device,(16) as num_pref_changed,....)) P1
    JOIN
    (SELECT company_id,action_type_id,tx_type_id
    FROM Testauditinfo_1 where trunc(audit_date_time)=trunc(sysdate)-1) a
    PIVOT (count(action_type_id) FOR (action_type_id,tx_type_id) IN ((3,4) AS add_invoice, (4,4) AS
    edit_invoice,(3,3) as num_checks,(3,47) as num_paychecks,(3,7) as num_recvd_payments,(3,9) as num_bills,
    (3,35) as num_estimates,(3,46) as num_purchase_orders)) P2
    on P1.company_id=P2.company_id
    JOIN
    (SELECT company_id,action_type_id,list_type_id
    FROM Testauditinfo_1 where trunc(audit_date_time)=trunc(sysdate)-1) a
    PIVOT (count(action_type_id) FOR (action_type_id,list_type_id) IN ((3,2) AS num_items,(3,1) as
    num_accounts,(3,4) as num_employees,(3,6) as num_customers,(3,14) as num_memorized_reports)) P3
    on P2.company_id=P3.company_id
    left outer JOIN
    (SELECT company_id,create_date,count(*) as num_logos
    FROM qbo.companylogos_1 group by company_id,create_date having trunc(create_date)=trunc(sysdate)-1) P4
    on P3.company_id=P4.company_id
    ORDER BY P1.company_id) source
    ON ((dest.company_id = source.company_id) and (dest.load_date = source.load_date))WHEN MATCHED THEN
    UPDATE SET dest.num_items = source.num_items where 1=2
    WHEN NOT MATCHED THEN
    INSERT (dest.company_id,.....) values (source.company_id,.....);

    Maybe
    MERGE INTO Test_1 dest
    USING (SELECT P1.company_id,trunc(sysdate) as load_date,num_logins,......
             FROM (select *
                     from (SELECT company_id,action_type_id
                             FROM Testauditinfo_1
                            where trunc(audit_date_time) = trunc(sysdate)-1
                          ) a
                          PIVOT (count(action_type_id)
                            FOR (action_type_id) IN ((1) as num_logins,
                                                     (2) as num_logouts,(61) as num_logins_from_mobile_device,
                                                     (16) as num_pref_changed,....
                  ) P1
                  JOIN
                  (select *
                     from (SELECT company_id,action_type_id,tx_type_id
                             FROM Testauditinfo_1
                            where trunc(audit_date_time) = trunc(sysdate)-1
                          ) a
                          PIVOT (count(action_type_id)
                            FOR (action_type_id,tx_type_id) IN ((3,4) AS add_invoice,
                                                                (4,4) AS edit_invoice,
                                                                (3,3) as num_checks,
                                                                (3,47) as num_paychecks,
                                                                (3,7) as num_recvd_payments,
                                                                (3,9) as num_bills,
                                                                (3,35) as num_estimates,(3,46) as num_purchase_orders
                  ) P2
               on P1.company_id = P2.company_id
                  JOIN
                  (select *
                     from (SELECT company_id,action_type_id,list_type_id
                             FROM Testauditinfo_1
                            where trunc(audit_date_time) = trunc(sysdate)-1
                          ) a
                          PIVOT (count(action_type_id)
                            FOR (action_type_id,list_type_id) IN ((3,2) AS num_items,
                                                                  (3,1) as num_accounts,
                                                                  (3,4) as num_employees,
                                                                  (3,6) as num_customers,
                                                                  (3,14) as num_memorized_reports
                  ) P3
               on P2.company_id = P3.company_id
                  left outer JOIN
                  (SELECT company_id,create_date,count(*) as num_logos
                     FROM qbo.companylogos_1
                    group by company_id,create_date
                    having trunc(create_date) = trunc(sysdate)-1
                  ) P4
               on P3.company_id = P4.company_id
            ORDER BY P1.company_id
          ) source
       ON ((dest.company_id = source.company_id) and (dest.load_date = source.load_date))
    WHEN MATCHED
    THEN UPDATE SET dest.num_items = source.num_items where 1 = 2
    WHEN NOT MATCHED
    THEN INSERT (dest.company_id,.....)
          values (source.company_id,.....)Did you try it ?
    Regards
    Etbin

  • Using User Defined Function is SQL

    Hi
    I did the following test to see how expensive it is to use user defined functions in SQL queries, and found that it is really expensive.
    Calling SQRT in SQL costs less than calling a dummy function that just returns
    the parameter value; this has to do with context switchings, but how can we have
    a decent performance compared to Oracle provided functions?
    Any comments are welcome, specially regarding the performance of UDF in sql
    and for solutions.
    create or replace function f(i in number) return number is
    begin
      return i;
    end;
    declare
      l_start   number;
      l_elapsed number;
      n number;
    begin
      select to_char(sysdate, 'sssssss')
        into l_start
        from dual;
      for i in 1 .. 20 loop
        select max(rownum)
          into n
          from t_tdz12_a0090;
      end loop;
      select to_char(sysdate, 'sssssss') - l_start
        into l_elapsed
        from dual;
      dbms_output.put_line('first: '||l_elapsed);
      select to_char(sysdate, 'sssssss')
        into l_start
        from dual;
      for i in 1 .. 20 loop
        select max(sqrt(rownum))
          into n
          from t_tdz12_a0090;
      end loop;
      select to_char(sysdate, 'sssssss') - l_start
        into l_elapsed
        from dual;
      dbms_output.put_line('second: '||l_elapsed);
      select to_char(sysdate, 'sssssss')
        into l_start
        from dual;
      for i in 1 .. 20 loop
        select max(f(rownum))
          into n
          from t_tdz12_a0090;
      end loop;
      select to_char(sysdate, 'sssssss') - l_start
        into l_elapsed
        from dual;
      dbms_output.put_line('third: '||l_elapsed);
    end;
    Results:
       first: 303
       second: 1051
       third: 1515
    Kind regards
    Taoufik

    I find that inline SQL is bad for performance but
    good to simplify SQL. I keep thinking that it should
    be possible somehow to use a function to improve
    performance but have never seen that happen.inline SQL is only bad for performance if the database design (table structure, indexes etc.) is poor or the way the SQL is written is poor.
    Context switching between SQL and PL/SQL for a User defined function is definitely a way to slow down performance.
    Obviously built-in Oracle functions are going to be quicker than User-defined functions because they are written into the SQL and PL/SQL engines and are optimized for the internals of those engines.
    There are a few things you can do to improve function
    performance, shaving microseconds off execution time.
    Consider using the NOCOPY hints for your parameters
    to use pointers instead of copying values. NOCOPY
    is a hint rather than a directive so it may or may
    not work. Optimize any SQL in the called function.
    Don't do anything in loops that does not have to be
    done inside a loop.Well, yes, but it's even better to keep all processing in SQL where possible and only resort to PL/SQL when absolutely necessary.
    The on-line documentation has suggested that using a
    DETERMINISTIC function can improve performance but I
    have not been able to demonstrate this and there are
    notes in Metalink suggesting that this does not
    happen. My experience is that DETERMINISTIC
    functions always get executed. There's supposed to
    be a feature in 11g that acually caches function
    return values.Deterministic functions will work well if used in conjunction with a function based index. That can improve access times when querying data on the function results.
    You can use DBMS_PROFILER to get run-time statistics
    for each line of your function as it is executed to
    help tune it.Or code it as SQL. ;)

  • How to use 'REQUEST' value on PL/SQL

    Hi All,
    I have assigned 'SEARCH' as button request to search button. I want to use this value in PL/SQL some thing like
    IF REQUEST='SEARCH' THEN
    --do something
    ELSE
    --do something else
    END IF;
    Can any one suggest how to access the 'REQUEST' value?
    Thanks in advance.
    Regards,
    Hari

    Hi rchalton!
    Sorry for that. Here is an english document which also shows an example of how to use v('REQUEST') or :REQUEST.
    [http://download.oracle.com/docs/cd/E14373_01/appdev.32/e11838/concept.htm]
    regards
    Edited by: Florian W. on 06.04.2009 15:35
    I've also tried to translate this link from german into english with google and it worked very good.

  • Using DEBUG Mode in Oracle SQL Developer Data Modeler to Log SQL

    Hello,
    I am looking for the possibilty to enable the logging of SQL in Data Modeler.
    Jeff Smith wrote an article how to do this for SQL Developer, for Data Modeler there are other configuration files. Does anyone have an idea?
    Best regards,
    Joop

    Hello Philip,
    the URL to the article of Jeff is: http://www.thatjeffsmith.com/archive/2012/10/using-debug-mode-in-oracle-sql-developer-to-log-sql/
    in the install directory of Data Modeler 3.3.0.734 exists a file datamodeler\datamodeler\bin\datamodeler.conf. This analogue the situation for sql Developer.
    However in this file there is no reference to a (non)debug file.
    In ide/bin directory there is a ide-logging-debug.conf and ide-logging.conf file. But they are not referenced. Should one of them be included?
    Joop

  • Managing statistics for object collections used as table types in SQL

    Hi All,
    Is there a way to manage statistics for collections used as table types in SQL.
    Below is my test case
    Oracle Version :
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE    11.2.0.3.0      Production
    TNS for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production
    SQL> Original Query :
    SELECT
         9999,
         tbl_typ.FILE_ID,
         tf.FILE_NM ,
         tf.MIME_TYPE ,
         dbms_lob.getlength(tfd.FILE_DATA)
    FROM
         TG_FILE tf,
         TG_FILE_DATA tfd,
              SELECT
              FROM
                   TABLE
                        SELECT
                             CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
                             OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
                        FROM
                             dual
         )     tbl_typ
    WHERE
         tf.FILE_ID     = tfd.FILE_ID
    AND tf.FILE_ID  = tbl_typ.FILE_ID
    AND tfd.FILE_ID = tbl_typ.FILE_ID;
    Elapsed: 00:00:02.90
    Execution Plan
    Plan hash value: 3970072279
    | Id  | Operation                                | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                         |              |     1 |   194 |  4567   (2)| 00:00:55 |
    |*  1 |  HASH JOIN                               |              |     1 |   194 |  4567   (2)| 00:00:55 |
    |*  2 |   HASH JOIN                              |              |  8168 |   287K|   695   (3)| 00:00:09 |
    |   3 |    VIEW                                  |              |  8168 |   103K|    29   (0)| 00:00:01 |
    |   4 |     COLLECTION ITERATOR CONSTRUCTOR FETCH|              |  8168 | 16336 |    29   (0)| 00:00:01 |
    |   5 |      FAST DUAL                           |              |     1 |       |     2   (0)| 00:00:01 |
    |   6 |    TABLE ACCESS FULL                     | TG_FILE      |   565K|    12M|   659   (2)| 00:00:08 |
    |   7 |   TABLE ACCESS FULL                      | TG_FILE_DATA |   852K|   128M|  3863   (1)| 00:00:47 |
    Predicate Information (identified by operation id):
       1 - access("TF"."FILE_ID"="TFD"."FILE_ID" AND "TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
       2 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
    Statistics
              7  recursive calls
              0  db block gets
          16783  consistent gets
          16779  physical reads
              0  redo size
            916  bytes sent via SQL*Net to client
            524  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              2  rows processed Indexes are present in both the tables ( TG_FILE, TG_FILE_DATA ) on column FILE_ID.
    select
         index_name,blevel,leaf_blocks,DISTINCT_KEYS,clustering_factor,num_rows,sample_size
    from
         all_indexes
    where table_name in ('TG_FILE','TG_FILE_DATA');
    INDEX_NAME                     BLEVEL LEAF_BLOCKS DISTINCT_KEYS CLUSTERING_FACTOR     NUM_ROWS SAMPLE_SIZE
    TG_FILE_PK                          2        2160        552842             21401       552842      285428
    TG_FILE_DATA_PK                     2        3544        852297             61437       852297      852297 Ideally the view should have used NESTED LOOP, to use the indexes since the no. of rows coming from object collection is only 2.
    But it is taking default as 8168, leading to HASH join between the tables..leading to FULL TABLE access.
    So my question is, is there any way by which I can change the statistics while using collections in SQL ?
    I can use hints to use indexes but planning to avoid it as of now. Currently the time shown in explain plan is not accurate
    Modified query with hints :
    SELECT    
        /*+ index(tf TG_FILE_PK ) index(tfd TG_FILE_DATA_PK) */
        9999,
        tbl_typ.FILE_ID,
        tf.FILE_NM ,
        tf.MIME_TYPE ,
        dbms_lob.getlength(tfd.FILE_DATA)
    FROM
        TG_FILE tf,
        TG_FILE_DATA tfd,
            SELECT
            FROM
                TABLE
                        SELECT
                             CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
                             OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
                        FROM
                             dual
        tbl_typ
    WHERE
        tf.FILE_ID     = tfd.FILE_ID
    AND tf.FILE_ID  = tbl_typ.FILE_ID
    AND tfd.FILE_ID = tbl_typ.FILE_ID;
    Elapsed: 00:00:00.01
    Execution Plan
    Plan hash value: 1670128954
    | Id  | Operation                                 | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                          |                 |     1 |   194 | 29978   (1)| 00:06:00 |
    |   1 |  NESTED LOOPS                             |                 |       |       |            |          |
    |   2 |   NESTED LOOPS                            |                 |     1 |   194 | 29978   (1)| 00:06:00 |
    |   3 |    NESTED LOOPS                           |                 |  8168 |  1363K| 16379   (1)| 00:03:17 |
    |   4 |     VIEW                                  |                 |  8168 |   103K|    29   (0)| 00:00:01 |
    |   5 |      COLLECTION ITERATOR CONSTRUCTOR FETCH|                 |  8168 | 16336 |    29   (0)| 00:00:01 |
    |   6 |       FAST DUAL                           |                 |     1 |       |     2   (0)| 00:00:01 |
    |   7 |     TABLE ACCESS BY INDEX ROWID           | TG_FILE_DATA    |     1 |   158 |     2   (0)| 00:00:01 |
    |*  8 |      INDEX UNIQUE SCAN                    | TG_FILE_DATA_PK |     1 |       |     1   (0)| 00:00:01 |
    |*  9 |    INDEX UNIQUE SCAN                      | TG_FILE_PK      |     1 |       |     1   (0)| 00:00:01 |
    |  10 |   TABLE ACCESS BY INDEX ROWID             | TG_FILE         |     1 |    23 |     2   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       8 - access("TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
       9 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
           filter("TF"."FILE_ID"="TFD"."FILE_ID")
    Statistics
              0  recursive calls
              0  db block gets
             16  consistent gets
              8  physical reads
              0  redo size
            916  bytes sent via SQL*Net to client
            524  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              2  rows processed
    Thanks,
    B

    Thanks Tubby,
    While searching I had found out that we can use CARDINALITY hint to set statistics for TABLE funtion.
    But I preferred not to say, as it is currently undocumented hint. I now think I should have mentioned it while posting for the first time
    http://www.oracle-developer.net/display.php?id=427
    If we go across the document, it has mentioned in total 3 hints to set statistics :
    1) CARDINALITY (Undocumented)
    2) OPT_ESTIMATE ( Undocumented )
    3) DYNAMIC_SAMPLING ( Documented )
    4) Extensible Optimiser
    Tried it out with different hints and it is working as expected.
    i.e. cardinality and opt_estimate are taking the default set value
    But using dynamic_sampling hint provides the most correct estimate of the rows ( which is 2 in this particular case )
    With CARDINALITY hint
    SELECT
        /*+ cardinality( e, 5) */*
    FROM
         TABLE
              SELECT
                   CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
                   OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
              FROM
                   dual
         ) e ;
    Elapsed: 00:00:00.00
    Execution Plan
    Plan hash value: 1467416936
    | Id  | Operation                             | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                      |      |     5 |    10 |    29   (0)| 00:00:01 |
    |   1 |  COLLECTION ITERATOR CONSTRUCTOR FETCH|      |     5 |    10 |    29   (0)| 00:00:01 |
    |   2 |   FAST DUAL                           |      |     1 |       |     2   (0)| 00:00:01 |
    With OPT_ESTIMATE hint
    SELECT
         /*+ opt_estimate(table, e, scale_rows=0.0006) */*
    FROM
         TABLE
              SELECT
                   CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
                   OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
              FROM
                   dual
         ) e ;
    Execution Plan
    Plan hash value: 4043204977
    | Id  | Operation                              | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                       |      |     5 |   485 |    29   (0)| 00:00:01 |
    |   1 |  VIEW                                  |      |     5 |   485 |    29   (0)| 00:00:01 |
    |   2 |   COLLECTION ITERATOR CONSTRUCTOR FETCH|      |     5 |    10 |    29   (0)| 00:00:01 |
    |   3 |    FAST DUAL                           |      |     1 |       |     2   (0)| 00:00:01 |
    With DYNAMIC_SAMPLING hint
    SELECT
        /*+ dynamic_sampling( e, 5) */*
    FROM
         TABLE
              SELECT
                   CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
                   OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
              FROM
                   dual
         ) e ;
    Elapsed: 00:00:00.00
    Execution Plan
    Plan hash value: 1467416936
    | Id  | Operation                             | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                      |      |     2 |     4 |    11   (0)| 00:00:01 |
    |   1 |  COLLECTION ITERATOR CONSTRUCTOR FETCH|      |     2 |     4 |    11   (0)| 00:00:01 |
    |   2 |   FAST DUAL                           |      |     1 |       |     2   (0)| 00:00:01 |
    Note
       - dynamic sampling used for this statement (level=2)I will be testing the last option "Extensible Optimizer" and put my findings here .
    I hope oracle in future releases, improve the statistics gathering for collections which can be used in DML and not just use the default block size.
    By the way, are you aware why it uses the default block size ? Is it because it is the smallest granular unit which oracle provides ?
    Regards,
    B

  • Using Proxy User Authentication in Sql Developer

    Hi!
    Is it possible to use proxy user authentication in SQL Developer? I'm thinking that if I'm clever enough, I can craft a custom jdbc URL that will allow my users to proxy authenticate into my Oracle 10gR2 database while using SQL Developer.
    Unfortunately, I'm not feeling all that clever. ;)
    Can anybody help me out here? Is it even in the realm of possibility?
    Thanks!
    Kevin Ferlazzo
    DBA
    VA Department of Juvenile Justice

    I found the possibility that proxy authentication of both accounts can be enforced:
    SQL> alter user appuser grant connect through personaluser AUTHENTICATION REQUIRED;
    I guess that this is the motivation for implementing the 2-session proxy connection method in SQL Developer.
    Regards,
    Martin

  • DDL in pl/sql block???

    Hi,
    begin
    create table sample_test ( x number);
    end;
    gives an error, but
    begin
    execute immediate 'create table sample_test(x number)';
    end
    very much works, is there any specific reason to why the first way of doing a DDL statement is restricted or avoided???
    cheere

    Hi,
    begin
    create table sample_test ( x number);
    end;
    you can not issue DDL like above in a PL/SQL Block, hence error
    gives an error, but
    begin
    execute immediate 'create table sample_test(x
    (x number)';
    end
    You Issued DDL in PL/SQL Block using Native Dynamic SQL, hence worked !!
    Message was edited by:
    biswabijay

  • How to Use name_in in the Pl/sql library

    Dear all,
    I have made a Pl/sql library to disable and enable items on the form
    and when i use set_item_property on some items it gives me an error " no such property for set_item_property", but i think its cause i am trying to set property for an item which is a current item
    how i can avoid this error?
    and do i have to user :system.current_item
    and how i can use it in the Pl/sql library is it like this? name_in('system.current_item');
    best regards,
    Shooosh

    Hi
    Here is a sample code check it out
    procedure rp_set_attr (p_field_name in varchar2, p_flag in varchar2) is
    -- p_flag : H - Hidden,
    -- V - Visible,
    -- D - Disabled,
    -- EM - Enabled Mandatory,
    -- EN - Enabled Non-Mandatory
    v_blk_id block := find_block(p_field_name);
    v_it_id item := find_item(p_field_name);
    begin
    if not id_null(v_blk_id) then
    if nvl(p_flag,'N') = 'D' then
    set_block_property (p_field_name, insert_allowed, property_false);
    set_block_property (p_field_name, update_allowed, property_false);
    set_block_property (p_field_name, delete_allowed, property_false);
    else
    set_block_property (p_field_name, insert_allowed, property_true);
    set_block_property (p_field_name, update_allowed, property_true);
    set_block_property (p_field_name, delete_allowed, property_true);
    end if;
    else
    if not id_null(v_it_id) then
    if p_flag = 'H' then
    set_item_property (p_field_name, visible, property_false);
    else
    if get_item_property (p_field_name, visible) = 'FALSE' then
    set_item_property (p_field_name, visible, property_true);
    end if;
    if get_item_property (p_field_name, item_type) = 'BUTTON' then
    if p_flag = 'D' then
    set_item_property (p_field_name, enabled, property_false);
    else
    set_item_property (p_field_name, enabled, property_true);
    end if;
    elsif get_item_property (p_field_name, item_type) <> 'DISPLAY ITEM' then
    if p_flag = 'D' then
    set_item_property (v_it_id, enabled, property_false);
    set_item_property (v_it_id, visual_attribute, 'DISPLAY_ITEM');
    else
    set_item_property (v_it_id, enabled, property_true);
    set_item_property (v_it_id, navigable, property_true);
    set_item_property (v_it_id, updateable, property_true);
    if get_item_property (p_field_name, item_type) <> 'RADIO GROUP' then
    set_item_property (v_it_id, queryable, property_true);
    end if;
    if p_flag = 'EM' then
    set_item_property (v_it_id, visual_attribute, 'MANDATORY_ATTR');
    if get_item_property (p_field_name, item_type) = 'LIST' then
    set_item_property (v_it_id, required, property_true);
    end if;
    elsif p_flag = 'EN' then
    set_item_property (v_it_id, visual_attribute, 'NON_MANDATORY_ATTR');
    if get_item_property (p_field_name, item_type) = 'LIST' then
    set_item_property (v_it_id, required, property_false);
    end if;
    end if;
    end if;
    end if;
    end if;
    else
    rp_err ('3','19', p_field_name || ' Field Name ');
    end if;
    end if;
    end;
    Regards
    Nagaraj

  • DESKI Report using Temp tables in MS- SQL server 2005

    Hi,
    I am trying to create a Free hand SQL DESKI report using temp tables in MS SQL Server-2005, I am using ODBC connection.
    When I run the report, I am getting the error
    u201CConnection or SQL sentence error (DA0005) No column or data to fetchu201D
    Ex:
    Select *
    into #t1
    from region
    select * from #t1
    drop table #t1
    Please help.
    Regards,
    Pratik

    Pratik, the SQL does not seem right. BTW you can only retreive data via Deski Free hand SQL. Also try to use OLE DB connection.

  • Can I use Reports Server Queue PL/SQL Table API to retrieve past jobs ?

    Hi all,
    Can I use Reports Server Queue PL/SQL Table API to retrieve past jobs using WEB.SHOW_DOCUMENT from Forms ?
    I have reviewed note 72531.1 about using this feature and wonder if i can use this metadata to retrieve past jobs submitted by a user.
    The idea would be to have a form module that can filter data from the rw_server_queue table, say, base on user running the form, and be able to retrieve past jobs from Report Server Queue. For this, one would query this table and use WEB.SHOW_DOCUMENT.
    Is this possible ...?
    Regards, Luis ...!

    Based on that metalink note and the code in the script rw_server.sql, I am pretty sure that by querying the table you would be able accomplish what you want... I have not tested it myself... but it looks that it will work... you have the jobid available from the queue, so you can use web.show_document to retrieve the output previously generated...
    ref:
    -- Constants for p_status_code and status_code in rw_server_queue table (same as zrcct_jstype)
    UNKNOWN CONSTANT NUMBER(2) := 0; -- no such job
    ENQUEUED CONSTANT NUMBER(2) := 1; -- job is waiting in queue
    OPENING CONSTANT NUMBER(2) := 2; -- opening report
    RUNNING CONSTANT NUMBER(2) := 3; -- running report
    FINISHED          CONSTANT NUMBER(2) := 4; -- job has finished
    TERMINATED_W_ERR CONSTANT NUMBER(2) := 5; -- job has terminated with

  • Using Before report Trigger with Sql Server

    i have used packages in oracle using before report triggers in bi publisher 11g is it possible to do in the same way with sql server ?? don't know much about sql server . any link or documents

    Hi T.holt,
    Personally, I don’t believe SQL 2008 R2 with ADMT 3.2 is supported.  From the guidelines of install the Active Directory Migration Tool (ADMT), ADMT v3.2 requires a preconfigured instance of SQL Server for its underlying data store. We
    should use SQL Server Express and install ADMT v3.2 on a member server. ADMT installation enforces the following service pack requirements:
    • SQL Server 2005 Express must be installed with Service Pack 3 (SP3) or later.
    • SQL Server 2008 Express must be installed with Service Pack 1 (SP1) or later.
    If you use full versions of SQL Server 2005 or SQL Server 2008. In this case, you need to install and run the ADMT console on a remote computer, and you can run multiple ADMT consoles on different remote computers. If
    you use a full version of SQL Server, ADMT installation does not enforce any service pack requirements.
    For more information about installing ADMT in the target domain, you can review the following article.http://technet.microsoft.com/en-us/library/cc974370(v=ws.10).aspx
    Regards,
    Sofiya Li
    Sofiya Li
    TechNet Community Support

Maybe you are looking for