Problem in empno

Hi experts,
The property of empno is varchar2(22). It is directly connected with a database block.The problem is when ever i enter a number in the form
it is returning to result. After appending % i am getting result.
In the key-exeqry i have written that
if :empno is not null then
:empno := to_number(:empno);
end if;
or
if :empno is not null then
set_block_property('emp',default_where,'emp = to_num(:emp)'));
end if;
but it is not returning any result. Can you please help.
Regards
Rajat

Hi Andreas,
The problem is in my database the empno field is varchar2(22).My DBA has defined it this way.But i can only found number in that field.
This is connected with the form.So the form item (:empno) is also char(22). So when ever i put any number inside the item say 101 and press executes query
from menu instead of giving correct results it is giving nothing( your search ctiteria return no result). But when i am giving input like 100%.Then it is returning correct result.
can you please help me to sort the problem.

Similar Messages

  • Table Filter Problem with Operators And ,Or

    Hi ,
    Version : Jdeveloper 11.1.1.5
    I Created one view object based on query( Select Empno,Ename From Emp)
    Based on View Object - I created adf table .
    In Emp table data is as shown below
    Empno Ename
    1 Hari
    2 Ramu and Hari
    I made "Filterable" Property true and FilterFeature is CaseInsensitive
    When i query 'Ramu a' it will retrive correctly,if i query 'Ramu and' it will show no data to display
    Please suggest me how to solve
    Note : What i noticed is and ,or are treating as operators
    Thanks
    Sk

    Hi,
    tried the same with JDeveloper 11.1.1.6 and it works without problems. The only problem that will arise is if you search for e.g. "Mickey and" to find Mickey and Mouse. Here "and" is recognized as a reserved keyword. However, you work around this by using "Mickey an". Note that you can intercept the table query using a QueryListener to handle cases where key words are used within a string
    Frank
    Edited by: Frank Nimphius on Apr 27, 2012 7:55 AM

  • Problem when trying to refresh oracle screens with latest data

    hello experts,
    i have one problem,i want to refresh the oracle screen with the latest data from the data
    base.
    It is a two stage process.At first step one user will select a row from the screen and then he will press a button .
    now the second screen will appear and the detail of the employee will be displayed.
    First step has been completed and the data is coming in the second form via parameters and i can see the full information of the employee.
    Now i want to refresh the oracle form i.e. suppose if my dba has made any changes in the oracle table( EMP table) i want that after pressing the refresh button user can see the
    latest data from the database.
    in WHEN_BUTTON_PRESSED trigger i have written this codes.
    enter_query;
    execute_query;
    but they are not giving the expected result.
    And one more thing please suggest whether in the second form i should use database item
    or non database item.
    When i am using database item when i am trying to close second from one pop up is appearing
    and asking that whether i want to save the changes.
    please suggest how can i remove this message from my application.
    Regards
    Anutosh

    Hi,
    what data did you transfer via parameters to the second form ?
    how did you populate the datablock in the second form ?
    Typical solution would be:
    (For my example the block is both forms is named EMP, and is based on the table SCOTT.EMP)
    In Form 1, transfer the primary key-value of the current record to a global or parameter (will use global in my example):
    e.g. you have a WHEN-BUTTON-PRESSED-Trigger with the following code:
    <pre>
    :GLOBAL.EMPNO:=:EMP.EMPNO;
    CALL_FORM('FORM2');
    </pre>
    In Form 2, you have a WHEN-NEW-FORM-INSTANCE-Trigger with code:
    <pre>
    DEFAULT_VALUE('GLOBAL.EMPNO', NULL);
    IF :GLOBAL.EMPNO IS NOT NULL THEN
    GO_BLOCK('EMP');
    EXECUTE_QUERY;
    :GLOBAL.EMPNO:=NULL;
    END IF;
    </pre>
    On block EMP in Form 2 there is a PRE-QUERY-Trigger with following code:
    <pre>
    IF :GLOBAL.EMPNO IS NOT NULL THEN
    :EMP.EMPNO:=:GLOBAL.EMPNO;
    END IF;
    </pre>
    And at last, in your refresh-button would be the following code:
    <pre>
    :GLOBAL.EMPNO:=:EMP.EMPNO;
    GO_BLOCK('EMP');
    EXECUTE_QUERY;
    :GLOBAL.EMPNO:=NULL;
    </pre>
    Hope this helps

  • Problem with outer join/insert

    I created a test case in scott schema that describes my problem. I use emp table, and I want to have one more table - emp_info - that will store some additional info about employees. Not every employee will have additional info. I can't add a field to emp table - this has to be in an additional table.
    I want to display all the emp's in a swing table, and an info if it exists - of course, using outer join. Further more, I want users to be able to enter info in this same table. If info already exists in the emp_info it will be updated, if not a new record is created.
    I hope you get the picture.
    So, emp_info table is:
    create table emp_info(empno number(4), info varchar2(10))
    ALTER TABLE "SCOTT"."EMP_INFO"
    ADD (CONSTRAINT "PK_EMP_INFO" PRIMARY KEY("EMPNO"))
    ALTER TABLE "SCOTT"."EMP_INFO"
    ADD (CONSTRAINT "FK_EMP_INFO_EMP" FOREIGN KEY("EMPNO")
    REFERENCES "SCOTT"."EMP"("EMPNO"))
    In Jdev I create entitiy objects for emp and emp_info, and create View object 'ViewOuter' using these two entities. emp is updatable and empinfo is updatable and reference.
    SQL query for the view object is:
    SELECT Emp.EMPNO, Emp.ENAME, Emp.JOB, Emp.MGR, Emp.HIREDATE,
    Emp.SAL, Emp.COMM, Emp.DEPTNO, EmpInfo.EMPNO AS EMPNO1,
    EmpInfo.INFO
    FROM EMP Emp, EMP_INFO EmpInfo
    WHERE Emp.EMPNO = EmpInfo.EMPNO(+)
    I changed View row class of the ViewOuter view:
    public void setInfo(String value) {
    if (getEmpno1()==null) {
    setEmpno1(getEmpno());
    setAttributeInternal(INFO, value);
    Now I create the table in swing. It works fine - if a user changes info, new record is created or existing updated etc. There is only one problem:
    If I change info on an employee, and then requery the view without commiting to the database, I don't see this info. If I try to change it, I get error
    (oracle.jbo.TooManyObjectsException) JBO-25013: Too many objects match the primary key oracle.jbo.Key[7499 ].
    It seams that the new info is cached, but requerying the view didn't pick it up. And when it creates new row for info PK is violated.
    How can I avoid this?

    I set up the primari key for emp_info like this:
    public void setInfo(String value) {
    if (getEmpno1()==null) {
    setEmpno1(getEmpno());
    setAttributeInternal(INFO, value);
    It's set when the user enters info.
    What is the difference between transaction.commit and transaction.postChanges?
    Posting changes looks like good temp solution. How can I change view object, so it calls postchanges before executing query? Since I can do requery on multiple places in application, this should be handled by the view itself.
    Is there any better way?

  • Problem in generating oracle 10g reports to rtf Template? (Emergency)

    Hi Team,
    I had a problem in generating rdf to rtf template.. I had an rdf template with place holders like this
    Hi i "Employee" <Empno> and my salary is <Empsal>
    but after the generation by using BIBatchConversion , i am getting partial rtf file like this
    Hi i "Employee"
    i am not getting the rest of the design... do i need to overwrite the rtf manually or do we have any other conversion process when we are using placeholders in rdf reports...
    Regards
    Bhu1

    hi...i already done what u had suggested but the error still come up.
    DECLARE
         RO_Report_ID REPORT_OBJECT;
         Str_Report_Server_Job VARCHAR2(100);
         Str_Job_ID VARCHAR2(100);
         Str_URL VARCHAR2(100);
         PL_ID PARAMLIST ;
    BEGIN
         PL_ID := GET_PARAMETER_LIST('TEMPDATA');
         IF NOT ID_NULL(PL_ID) THEN
              PAUSE;
    DESTROY_PARAMETER_LIST(PL_ID);
         END IF;
         PL_ID := CREATE_PARAMETER_LIST('TEMPDATA');
         RO_Report_ID := FIND_REPORT_OBJECT('REPORT_OBJ');
         ADD_PARAMETER(PL_ID, 's_sin_no', TEXT_PARAMETER,:scrap_delivery_request.sin_no);
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_FILENAME, 'C:\New Forms\REF_SF_510.rdf');
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_COMM_MODE, SYNCHRONOUS);
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_EXECUTION_MODE, BATCH);
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_DESTYPE, FILE);
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_DESFORMAT, 'PDF');
              SET_REPORT_OBJECT_PROPERTY(RO_Report_ID, REPORT_SERVER, 'rep_edmund.main');
              Str_Report_Server_Job := RUN_REPORT_OBJECT(RO_Report_ID, PL_ID);
              Str_Job_ID := SUBSTR(Str_Report_Server_Job, LENGTH('rep_edmund.main') + 2, LENGTH(Str_Report_Server_Job));
              Str_URL      := '/reports/rwservlet/getjobid' || Str_Job_ID || '?server=' || 'rep_edmund.main';
              WEB.SHOW_DOCUMENT(Str_URL, '_SELF');
              DESTROY_PARAMETER_LIST(PL_ID);
    END;
    Edited by: baguhan on Jul 4, 2009 12:59 AM

  • Any ideas about this problem's automization...

    Hi all
    Please suggest any sql query for below problem:
    I want to compare two schema tables(same in all schemas but altered late in either case) to display the differences in schemas. for this we can use TOAD SOFTWARE but it is very easy to compare the schema using this software but difficult to display the details (differences) according to my requirement. so can you anybody suggest any query to extract the following model:
    for example:
    Schema1 = emp table
    schema2 = emp table
    desc emp in schema1:
    empno number(10) notnull
    ename varchar2(20)
    sal number(30)
    desc emp in schema2:
    empno number(10) notnull
    empname varchar2(19) notnull
    sal number(30)
    out put requirement:
    Schema |TableName| Fields | Datatype | Null/Notnull | Constraint Schema2|TableName| Fields | Datatype | Null/Notnull
    EMP EMPNO NOTNULL EMP EMPNO NOT NULL
    SAL SAL
    ENAME VARCHAR2(20) EMPNAME VARCHAR2(19) "ADDITIONAL
                                                           (name change)      NOT NULL
                                                                     CONSTRAINT"
    let me explain above example, in the given two same tables in different schema, in the output
    those fields which are matched in terms of all i.e field name,datatype,constraint,null/notnull
    should be displayed first.
    Then those field which have differences should be displayed by giving appropriate comments
    like "colmn name changed if there is difference between col names in both schemas"
    In some cases, we cannot find the table in one schema, it should print "table not found on the schema2 side in the above output
    Very important note is that Schema1 should reflect same as
    schema2 tables.
    One more thing is in the above output : for ename field only datatype displayed, this is because for those
    fields which have change in schema2, for that colomns only we have to display the datatype.
    Thanks in advance
    prasanth

    Some sample code to get you started ...
    SQL> desc core.emp
    Name                                      Null?    Type
    EMPNO                                     NOT NULL NUMBER(10)
    ENAME                                              VARCHAR2(20)
    SAL                                                NUMBER(30)
    DT                                        NOT NULL DATE
     
    SQL> desc flip.emp
    Name                                      Null?    Type
    EMPNO                                     NOT NULL NUMBER(10)
    EMPNAME                                   NOT NULL VARCHAR2(19)
    SAL                                                NUMBER(30)
    DT                                                 DATE
     
    SQL> set lines 120
    SQL> col owner format a10
    SQL> col table_name format a10
    SQL> col column_name format a10
    SQL> col data_type format a10
    SQL>
    SQL> with t1 as
      2       ( SELECT 1               src1
      3               ,to_number(null) src2
      4               ,owner
      5               ,table_name
      6               ,column_name
      7               ,data_type
      8               ,data_length
      9               ,data_scale
    10               ,nullable
    11         FROM  dba_tab_columns
    12         WHERE owner      = 'CORE'
    13         AND   table_name = 'EMP'
    14       )
    15      ,t2 as
    16       ( SELECT to_number(null) src1
    17               ,1               src2
    18               ,owner
    19               ,table_name
    20               ,column_name
    21               ,data_type
    22               ,data_length
    23               ,data_scale
    24               ,nullable
    25         FROM  dba_tab_columns
    26         WHERE owner      = 'FLIP'
    27         AND   table_name = 'EMP'
    28       )
    29      ,src as
    30       ( select table_name
    31               ,column_name
    32               ,data_type
    33               ,data_length
    34               ,data_scale
    35               ,nullable
    36               ,count(src1) cnt1
    37               ,count(src2) cnt2
    38         from ( select * from t1
    39                union all
    40                select * from t2
    41              )
    42         group by table_name
    43               ,column_name
    44               ,data_type
    45               ,data_length
    46               ,data_scale
    47               ,nullable
    48       )
    49      ,similar_col as
    50       ( select table_name
    51               ,column_name
    52               ,data_type
    53               ,data_length
    54               ,data_scale
    55               ,nullable
    56         from   src
    57         where  cnt1 = cnt2
    58       )
    59      ,different_col as
    60       ( select table_name
    61               ,column_name
    62               ,data_type
    63               ,data_length
    64               ,data_scale
    65               ,nullable
    66         from   src
    67         where  cnt1 != cnt2
    68       )
    69      ,same as
    70       ( select 'Same'   text
    71               ,cast(null as varchar2(30)) owner
    72               ,s.*
    73        from    similar_col   s
    74       )
    75      ,diff1 as
    76       ( select 'Diff' text
    77               ,t1.owner
    78               ,d.*
    79         from   different_col d
    80               ,t1
    81         where  t1.table_name          = d.table_name
    82         and    t1.column_name         = d.column_name
    83         and    t1.data_type           = d.data_type
    84         and    nvl(t1.data_length,-1) = nvl(d.data_length,-1)
    85         and    nvl(t1.data_scale ,-1) = nvl(d.data_scale ,-1)
    86         and    t1.nullable            = d.nullable
    87       )
    88      ,diff2 as
    89       ( select 'Diff' text
    90               ,t2.owner
    91               ,d.*
    92         from   different_col d
    93               ,t2
    94         where  t2.table_name          = d.table_name
    95         and    t2.column_name         = d.column_name
    96         and    t2.data_type           = d.data_type
    97         and    nvl(t2.data_length,-1) = nvl(d.data_length,-1)
    98         and    nvl(t2.data_scale ,-1) = nvl(d.data_scale ,-1)
    99         and    t2.nullable            = d.nullable
    100       )
    101  select * from same
    102  union all
    103  select * from diff1
    104  union all
    105  select * from diff2
    106  order by 1 desc,4
    107  ;
     
    TEXT OWNER      TABLE_NAME COLUMN_NAM DATA_TYPE  DATA_LENGTH DATA_SCALE N
    Same            EMP        EMPNO      NUMBER              22          0 N
    Same            EMP        SAL        NUMBER              22          0 Y
    Diff CORE       EMP        DT         DATE                 7            N
    Diff FLIP       EMP        DT         DATE                 7            Y
    Diff FLIP       EMP        EMPNAME    VARCHAR2            19            N
    Diff CORE       EMP        ENAME      VARCHAR2            20            Y
     
    6 rows selected.To get the desired side by side output you would have to slightly modify the above and do a full outer join ... unfortunately, in 9.2.0.1.0, I got ORA-03113 trying to use the ANSI full outer join syntax ... to fake it with the traditional syntax ...
    SQL> set lines 200 pages 500
    SQL> with t1 as
      2       ( SELECT 1               src1
      3               ,to_number(null) src2
      4               ,owner
      5               ,table_name
      6               ,column_name
      7               ,data_type
      8               ,data_length
      9               ,data_scale
    10               ,nullable
    11         FROM  dba_tab_columns
    12         WHERE owner      = 'CORE'
    13         AND   table_name = 'EMP'
    14       )
    15      ,t2 as
    16       ( SELECT to_number(null) src1
    17               ,1               src2
    18               ,owner
    19               ,table_name
    20               ,column_name
    21               ,data_type
    22               ,data_length
    23               ,data_scale
    24               ,nullable
    25         FROM  dba_tab_columns
    26         WHERE owner      = 'FLIP'
    27         AND   table_name = 'EMP'
    28       )
    29      ,src as
    30       ( select table_name
    31               ,column_name
    32               ,data_type
    33               ,data_length
    34               ,data_scale
    35               ,nullable
    36               ,count(src1) cnt1
    37               ,count(src2) cnt2
    38         from ( select * from t1
    39                union all
    40                select * from t2
    41              )
    42         group by table_name
    43               ,column_name
    44               ,data_type
    45               ,data_length
    46               ,data_scale
    47               ,nullable
    48       )
    49      ,similar_col as
    50       ( select table_name
    51               ,column_name
    52               ,data_type
    53               ,data_length
    54               ,data_scale
    55               ,nullable
    56         from   src
    57         where  cnt1 = cnt2
    58       )
    59      ,different_col as
    60       ( select table_name
    61               ,column_name
    62               ,data_type
    63               ,data_length
    64               ,data_scale
    65               ,nullable
    66         from   src
    67         where  cnt1 != cnt2
    68       )
    69      ,sd1 as
    70       ( select 'same' text
    71               ,o.owner
    72               ,s.*
    73         from   similar_col   s
    74               ,(select owner from t1 where rownum <2) o
    75         union all
    76         select 'diff' text
    77               ,t1.owner
    78               ,d.*
    79         from   different_col d
    80               ,t1
    81         where  t1.table_name          = d.table_name
    82         and    t1.column_name         = d.column_name
    83         and    t1.data_type           = d.data_type
    84         and    nvl(t1.data_length,-1) = nvl(d.data_length,-1)
    85         and    nvl(t1.data_scale ,-1) = nvl(d.data_scale ,-1)
    86         and    t1.nullable            = d.nullable
    87       )
    88      ,sd2 as
    89       ( select 'same' text
    90               ,o.owner
    91               ,s.*
    92         from   similar_col   s
    93               ,(select owner from t2 where rownum <2) o
    94         union all
    95         select 'diff' text
    96               ,t2.owner
    97               ,d.*
    98         from   different_col d
    99               ,t2
    100         where  t2.table_name          = d.table_name
    101         and    t2.column_name         = d.column_name
    102         and    t2.data_type           = d.data_type
    103         and    nvl(t2.data_length,-1) = nvl(d.data_length,-1)
    104         and    nvl(t2.data_scale ,-1) = nvl(d.data_scale ,-1)
    105         and    t2.nullable            = d.nullable
    106       )
    107  select nvl(sd1.text,sd2.text) text
    108        ,sd1.owner
    109        ,sd1.table_name
    110        ,sd1.column_name
    111        ,sd1.data_type
    112        ,sd1.data_length
    113        ,sd1.data_scale
    114        ,sd1.nullable
    115        ,sd2.owner
    116        ,sd2.table_name
    117        ,sd2.column_name
    118        ,sd2.data_type
    119        ,sd2.data_length
    120        ,sd2.data_scale
    121        ,sd2.nullable
    122  from  sd1,sd2
    123  where sd1.table_name  = sd2.table_name  (+)
    124  and   sd1.column_name = sd2.column_name (+)
    125  union
    126  select nvl(sd1.text,sd2.text) text
    127        ,sd1.owner
    128        ,sd1.table_name
    129        ,sd1.column_name
    130        ,sd1.data_type
    131        ,sd1.data_length
    132        ,sd1.data_scale
    133        ,sd1.nullable
    134        ,sd2.owner
    135        ,sd2.table_name
    136        ,sd2.column_name
    137        ,sd2.data_type
    138        ,sd2.data_length
    139        ,sd2.data_scale
    140        ,sd2.nullable
    141  from  sd1,sd2
    142  where sd1.table_name  (+) = sd2.table_name
    143  and   sd1.column_name (+) = sd2.column_name
    144  order by 1 desc nulls last, 4
    145  ;
    TEXT OWNER      TABLE_NAME COLUMN_NAM DATA_TYPE  DATA_LENGTH DATA_SCALE N OWNER      TABLE_NAME COLUMN_NAM DATA_TYPE  DATA_LENGTH DATA_SCALE N
    same CORE       EMP        EMPNO      NUMBER              22          0 N FLIP       EMP        EMPNO      NUMBER              22          0 N
    same CORE       EMP        SAL        NUMBER              22          0 Y FLIP       EMP        SAL        NUMBER              22          0 Y
    diff CORE       EMP        DT         DATE                 7            N FLIP       EMP        DT         DATE                 7            Y
    diff CORE       EMP        ENAME      VARCHAR2            20            Y
    diff                                                                      FLIP       EMP        EMPNAME    VARCHAR2            19            NNow, having done all this ... was it worthwhile? Wouldn't comparing the output of dbms_metdata.get_ddl been as good (actionable) as this? Hmmm.
    Cheers.

  • Problem while partitioning The Table

    create table Employee ( empno number(3), name varchar2(10), deptno number(4))
    partition by range(deptno)
    (partition p1 values less than(11),
    partition p2 values less than(21),
    partition p3 values less than(31));
    create table Employee (
    ERROR at line 1:
    ORA-00439: feature not enabled: Partitioning
    Please help me for solving this problem and send me the details I need to partition my table.
    Thanks in advance.
    w.regards
    R.Satish

    Looks like you don't have partition license or don't have a complete install of Oracle version 8.0.5. The best way to check is do a sqlplus user/passwd and look for a message that said "Production with the Partitioning and objects options" to appear before the SQL> prompt. Hope this helps....
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by rkumar:
    create table Employee ( empno number(3), name varchar2(10), deptno number(4))
    partition by range(deptno)
    (partition p1 values less than(11),
    partition p2 values less than(21),
    partition p3 values less than(31));
    create table Employee (
    ERROR at line 1:
    ORA-00439: feature not enabled: Partitioning
    Please help me for solving this problem and send me the details I need to partition my table.
    Thanks in advance.
    w.regards
    R.Satish <HR></BLOCKQUOTE>
    null

  • Problem Multiple record navigation in oracle forms

    I retrieve multiple records using cursor fetch command in the select query i have given condition to retrieve details of employee no.
    For example if we are giving an input as empno:100 then it retrieves two records of same emp no(100).It displays 2/3 records in the task bar when i navigate using push buttons it displays an empty record in the interface provided.(ie 3/3 records).How to avoid third unknown record displaying in the interface.

    most likely the problem is during the population of the block using the query.
    i assume that you are creating one additional record after the last record from your query..
    so this must be either with the CREATE_RECORD or NEXT_RECORD problem in the loop.so you should check in the loop first if the record exists, then do CREATE_RECORD or NEXT_RECORD.

  • Problem during creation of dynamic Internal

    Hi All,
    I am trying to create a dynamic internal table.
    I went through many posts, but the problem i am facing is,
    I want an internal table as:
    Empno
    Ename
    Lgart1- Depending on the Wage types user enter on the selection screen.
    Lgart2
    When i tried to create dynamic table by
    cl_abap_typedescr=>describe_by_name(tab_name),
    it asks for the table name as string and tht also standard table.
    I have a type user defined local structure like :
    DATA: BEGIN OF it_struct,
          pernr LIKE pa0001-pernr,  "Employee No.
          ename LIKE pa0001-ename,  "Name of Employee
          BETRG LIKE PC207-BETRG,   "Net Amount
          END OF IT_struct.
    I created this structure, coz these 3 fields are fixed and other fields i need to add dynamically.
    Please suggest.

    Hi,
    Instead of using cl_abap_typedescr class use cl_alv_table_create and method create_dynamic_table.
    For your reference check the program below.
      DATA: dreft TYPE REF TO data,
            drefl TYPE REF TO data.
      DATA: xfc TYPE lvc_s_fcat,
            ifc TYPE lvc_t_fcat.
      FIELD-SYMBOLS: <upload> TYPE STANDARD TABLE,
                     <fs_worka> TYPE ANY.
      xfc-fieldname = 'Record'.
      xfc-datatype = 'CHAR'.
      xfc-intlen = '255'.
      APPEND xfc TO ifc.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
       i_style_table             =
          it_fieldcatalog           = ifc
        IMPORTING
          ep_table                  = dreft.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      ASSIGN dreft->* TO <upload>.
      CREATE DATA drefl LIKE LINE OF <upload>.
      ASSIGN drefl->* TO <fs_worka>.
    Hope this might help you.
    Thanks,
    Prashanth

  • Can some one please tell me what is the problem in the below pl/sql block

    Hi, I have problem with the following pl/sql block, I need this with bulk operation.
    -- Assume the following scenario, we are validating dept (master) and emp(child) which are my temporary tables and updating the status back to
    -- dept ( for all the validation errors, even if we have any validation at child  it has to update the header record with error message),
    -- upon successful validation insert the data into dept3, and emp3 interms of batches
    -- I have give the sample example with dept and emp, but i have around 10 million records which has around 30-40 validations,
    -- I would like to process them in terms of batches using bulk collection as this would do fast processing
    -- Can some one please tell me how to insert them in terms of bulk with every set of 1000 records in each batch in this example,for every set of 1000 records
    -- i need update batch id with unique number in dept table
    -- with current data i can have 50 batches , I need to pass, deptno as parameter to my emp cursor. 
    -- can some one please tell me how to make this validation and insertion more efficient. so that while inserting the data for every batch it should insert batch id
    -- Tried with LIMIT clause as well but not working
    -- I am correcting the code as per your comments Request you to please suggest me so that I can correct , I am new to PL/sql, started learning now.
    step - 1:
    CREATE TABLE DEPT
           (DEPTNO NUMBER(6) primary key,
            DNAME VARCHAR2(25),
            LOC VARCHAR2(23),
            batch_id number );
    INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK', null);
    INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS', null);
    INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO', null);
    INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON', null);
    step - 2:
    declare
    begin
    for i in 1..50000 loop
    insert into dept values(40+i, 'OPERATIONS'||i,'BOSTON'||i, null);
    end loop;
    commit;
    exception
    when others then
    dbms_output.put_line('Exception occured:'||SQLERRM);
    end;
    step - 3:
    create sequence emp_seq start with 1 increment by 1;
    step - 4:
    CREATE TABLE EMP
           (EMPNO NUMBER(15) NOT NULL primary key,
            ENAME VARCHAR2(20),
            JOB VARCHAR2(20),
            MGR NUMBER(4),
            HIREDATE DATE,
            SAL NUMBER(7, 2),
            COMM NUMBER(7, 2),
            DEPTNO NUMBER(6));
    INSERT INTO EMP VALUES
            (7369, 'SMITH',  'CLERK',     7902,
            TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20);
    INSERT INTO EMP VALUES
            (7499, 'ALLEN',  'SALESMAN',  7698,
            TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,  300, 30);
    INSERT INTO EMP VALUES
            (7521, 'WARD',   'SALESMAN',  7698,
            TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,  500, 30);
    INSERT INTO EMP VALUES
            (7566, 'JONES',  'MANAGER',   7839,
            TO_DATE('2-APR-1981', 'DD-MON-YYYY'),  2975, NULL, 20);
    INSERT INTO EMP VALUES
            (7654, 'MARTIN', 'SALESMAN',  7698,
            TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
    INSERT INTO EMP VALUES
            (7698, 'BLAKE',  'MANAGER',   7839,
            TO_DATE('1-MAY-1981', 'DD-MON-YYYY'),  2850, NULL, 30);
    INSERT INTO EMP VALUES
            (7782, 'CLARK',  'MANAGER',   7839,
            TO_DATE('9-JUN-1981', 'DD-MON-YYYY'),  2450, NULL, 10);
    INSERT INTO EMP VALUES
            (7788, 'SCOTT',  'ANALYST',   7566,
            TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7839, 'KING',   'PRESIDENT', NULL,
            TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
    INSERT INTO EMP VALUES
            (7844, 'TURNER', 'SALESMAN',  7698,
            TO_DATE('8-SEP-1981', 'DD-MON-YYYY'),  1500, NULL, 30);
    INSERT INTO EMP VALUES
            (7876, 'ADAMS',  'CLERK',     7788,
            TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
    INSERT INTO EMP VALUES
            (7900, 'JAMES',  'CLERK',     7698,
            TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),   950, NULL, 30);
    INSERT INTO EMP VALUES
            (7902, 'FORD',   'ANALYST',   7566,
            TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),  3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);
    commit;
    step :- 5
    declare
    cursor c1 is select * from dept;
    k number:=0;
    m number:=0;
    begin
    for i in  c1 loop
    k:=k+1;
    --dbms_output.put_line('k:'||k);
    --dbms_output.put_line('i.deptno:'||i.deptno);
    m:=0;
    for j in 1..5 loop
    m:=m+1;
    --dbms_output.put_line('m:'||m);
    --dbms_output.put_line('i.deptno:'||i.deptno);
    insert into emp values
            (9000+emp_seq.nextval, 'SMITH'||'_'||emp_seq.currval,  'CLERK'||'_'||emp_seq.currval,     7902,
            TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, i.deptno);
    end loop;
    end loop;
    commit;
    exception
    when others then
    dbms_output.put_line('Exception occured:'||sqlerrm);
    end;
    step :-6
    create table dept3 as select * from dept where 1=2;
    create table emp3 as select * from emp where 1=2;
    alter table dept add object_id number;
    alter table dept add status varchar(20);
    alter table dept add err_msg varchar2(200);
    alter table emp add object_id number;
    -- I have not included the alter statements in the inital creation because i dont want them to insert into dept3 and emp3
    CREATE OR REPLACE
    PACKAGE test_b
    AS
      g_batch_id NUMBER;
      PROCEDURE emp_ins(
          p_EMPNO    NUMBER,
          p_ENAME    VARCHAR2,
          p_JOB      VARCHAR2,
          p_MGR      NUMBER,
          p_HIREDATE DATE,
          p_SAL      NUMBER,
          p_COMM     NUMBER,
          p_DEPTNO   NUMBER);
      PROCEDURE dept_ins(
          p_DEPTNO NUMBER,
          p_dname  VARCHAR2 ,
          p_LOC    VARCHAR2,
          p_batch  NUMBER);
      PROCEDURE validate_prc;
      PROCEDURE main;
    TYPE dept_t
    IS
      TABLE OF dept%ROWTYPE;
      hdr_tbl dept_t;
    TYPE emp_t
    IS
      TABLE OF emp%ROWTYPE;
      line_tbl emp_t;
    TYPE dept_i_t
    IS
      TABLE OF dept3%ROWTYPE;
      hdr_ins_tbl dept_i_t;
    TYPE emp_i_t
    IS
      TABLE OF emp3%ROWTYPE;
      line_ins_tbl emp_i_t;
    END;
    -- pacakge body
    CREATE OR REPLACE
    PACKAGE body test_b
    AS
    PROCEDURE emp_ins(
        p_EMPNO    NUMBER,
        p_ENAME    VARCHAR2,
        p_JOB      VARCHAR2,
        p_MGR      NUMBER,
        p_HIREDATE DATE,
        p_SAL      NUMBER,
        p_COMM     NUMBER,
        p_DEPTNO   NUMBER)
    IS
    BEGIN
      INSERT
      INTO EMP3
          EMPNO ,
          ENAME ,
          JOB ,
          MGR ,
          HIREDATE ,
          SAL ,
          COMM ,
          DEPTNO
        VALUES
          P_EMPNO ,
          P_ENAME ,
          P_JOB ,
          P_MGR ,
          P_HIREDATE ,
          P_SAL ,
          P_COMM ,
          P_DEPTNO
    EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('EXCEPTION AT EMP INSERT'||SQLERRM);
    END;
    PROCEDURE dept_ins
        p_DEPTNO NUMBER,
        p_dname  VARCHAR2 ,
        p_LOC    VARCHAR2,
        p_batch  NUMBER
    IS
    BEGIN
      INSERT
      INTO DEPT3
          DEPTNO ,
          DNAME ,
          LOC ,
          batch_id
        VALUES
          p_DEPTNO ,
          p_DNAME ,
          p_LOC ,
          p_batch
    EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('EXCEPTION AT DEPT INSERT'||SQLERRM);
    END ;
    PROCEDURE validate_prc
    IS
      CURSOR c1
      IS
        SELECT * FROM dept WHERE status IS NULL ;--AND rownum <25;
      CURSOR c2(p_dept NUMBER )
      IS
        SELECT * FROM emp WHERE deptno=p_dept;
      e_validation EXCEPTION;
    BEGIN
      OPEN c1;
      LOOP
        FETCH c1 BULK COLLECT INTO hdr_tbl limit 5000;
        SELECT emp_seq.nextval INTO g_batch_id FROM dual;
        EXIT
      WHEN hdr_tbl.count = 0;
        dbms_output.put_line('batch'||g_batch_id);
      END LOOP;
      CLOSE c1;
      dbms_output.put_line('C1 closed');
      --------- Loading data into the inv line table type -------------------------------
      FOR i IN 1 .. hdr_tbl.count
      LOOP
        dbms_output.put_line('started validation');
        -- do header level validations
        IF hdr_tbl(i).dname  IS NULL THEN
          hdr_tbl(i).status  := 'ERROR';
          hdr_tbl(i).err_msg :=',DNAME is null';
        END IF;
        OPEN c2(hdr_tbl(i).deptno);
        LOOP
          FETCH c2 BULK COLLECT INTO line_tbl;
          -- EXIT WHEN c2%NOTFOUND;
        END LOOP;
        CLOSE c2;
        FOR j IN 1 .. line_tbl.count
        LOOP
          -- do line validations
          IF line_tbl(j).ename IS NULL THEN
            hdr_tbl(i).status  := 'ERROR';
            hdr_tbl(i).err_msg :=',ENAME is null';
          END IF;
          BEGIN
            FORALL j IN line_tbl.FIRST .. line_tbl.LAST
            SAVE EXCEPTIONS
            UPDATE EMP
            SET object_id =3
              -- I have multiple columns to update based on validations
            WHERE deptno =hdr_tbl(i).deptno------------
            AND empno    =line_tbl (j).empno;
            COMMIT;
            line_tbl.DELETE;
            dbms_output.put_line( 'Successfully updated emp temp table.');
          EXCEPTION
          WHEN OTHERS THEN
            ROLLBACK;
            dbms_output.put_line( 'Error while updating line temp table. ' || sqlerrm );
            FOR j IN 1 .. sql%BULK_EXCEPTIONS.COUNT
            LOOP
              DBMS_OUTPUT.put_line(' occurred during line temp table updation ' || sql%BULK_EXCEPTIONS(i).ERROR_INDEX );
            END LOOP;
            raise e_validation;
          END;
        END LOOP; -- j
        --CLOSE c2;
        IF hdr_tbl(i).err_msg IS NULL THEN
          hdr_tbl (i).status  := 'VALID';
          hdr_tbl (i).err_msg := NULL;
        END IF;
        -- even if I have line validation failed I have to update header status and erorr msg
        BEGIN
          FORALL i IN hdr_tbl.FIRST .. hdr_tbl.LAST
          SAVE EXCEPTIONS
          UPDATE DEPT
          SET object_id =4,
            status      = hdr_tbl (i).status,
            err_msg     = hdr_tbl (i).err_msg
            --  batch_id =
            -- I have multiple columns to update based on validations
          WHERE deptno = hdr_tbl (i).deptno
          AND status  IS NULL; ------------
          COMMIT;
          hdr_tbl.DELETE;
          dbms_output.put_line( 'Successfully updated dept temp table.');
          --close c1;
        EXCEPTION
        WHEN OTHERS THEN
          ROLLBACK;
          dbms_output.put_line( 'Error while updating hdr temp table. ' || sqlerrm );
          FOR i IN 1 .. sql%BULK_EXCEPTIONS.COUNT
          LOOP
            DBMS_OUTPUT.put_line(' occurred during line temp table updation ' || sql%BULK_EXCEPTIONS(i).ERROR_INDEX );
          END LOOP;
          raise e_validation;
        END;
      END LOOP; --i
    EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('EXCEPTION AT validate'||SQLERRM);
    END ;
    PROCEDURE main
    IS
      CURSOR dept_ins_cur
      IS
        SELECT * FROM dept WHERE status='VALID';
      CURSOR emp_ins_cur(p_deptno NUMBER)
      IS
        SELECT * FROM emp WHERE deptno= p_deptno;
    BEGIN
      validate_prc;
      OPEN dept_ins_cur;
      LOOP
      FETCH dept_ins_cur BULK COLLECT INTO hdr_ins_tbl limit 1000
      EXIT
      WHEN dept_ins_cur%NOTFOUND;
      END LOOP;
      CLOSE dept_ins_cur;
      --------- Loading data into the inv line table type -------------------------------
      FOR i IN 1 .. hdr_tbl.count
      loop
      dept_ins(hdr_ins_tbl(i).deptno ,
      hdr_ins_tbl(i).DNAME ,
      hdr_ins_tbl(i).LOC , emp_seq.nextval);
      commit;
      OPEN emp_ins_cur(hdr_ins_tbl(i).deptno);
      LOOP
      FETCH emp_ins_cur BULK COLLECT INTO line_ins_tbl;
      --EXIT WHEN emp_ins_cur%NOTFOUND;
      END LOOP;
      CLOSE emp_ins_cur;
      for j in 1..line_ins_tbl.count loop
      emp_ins(line_ins_tbl(j).EMPNO ,
      line_ins_tbl(j).ENAME ,
      line_ins_tbl(j).JOB ,
      line_ins_tbl(j).MGR ,
      line_ins_tbl(j).HIREDATE ,
      line_ins_tbl(j).SAL ,
      line_ins_tbl(j).comm ,
      line_ins_tbl(j).DEPTNO );
      end loop;
      end loop;
      commit;
      BEGIN
      forall i IN hdr_ins_tbl.first .. hdr_ins_tbl.last
      SAVE exceptions
      UPDATE dept
      SET status   = 'INSERTED',
      err_msg  = null
      WHERE deptno=hdr_ins_tbl (i).deptno
      AND status   = 'VALID';
      COMMIT;
      hdr_ins_tbl.delete;
      dbms_output.put_line( 'inserting into temp tables.');
      EXCEPTION
      WHEN OTHERS THEN
      rollback;
      end;
    EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('exception in main' ||SQLERRM);
    END ;
    END;
    Thanks in advance...
    Message was edited by: 888025

    Hi, I have problem with the following pl/sql block
    Well, as Hoek already said, that is the understatement of the century.
    I can't be absolutely certain but I think that set of DDL and code that you posted has just about every possible error and design issue that there is! It would make an excellent addition to BluShadow's FAQs an an example of what NOT to do.
    I don't think it is even possible to 'fix the basics first' as Hoek suggested. IMHO the first step needs to be to create a functional requirements document (FRD) that explains in detail WHAT needs to be done. That doc should also contain info about how any errors/recovery/restart is to be handled. It is premature to try to implement ANY solution without first knowing what is needed functionally.
    Once the FRD is done you should do a walk-through based on your current architecture and sample data to make sure that the document really covers ALL of the steps that need to be performed and that it adequately explains how to deal with any processing or data issues that might arise.
    The next document you need is the TRD - Technical Requirements Doc that covers the different technical implementions of the FRD that can be done and the advantages/disadvantages of each.
    Then you can start working on a prototype.
    1. The DDL you posted isn't coherent - there are CREATE table statements and then later ALTER statements that add additional columns. There doesn't appear to be any reason for not including ALL of the columns in the CREATE table statement.
    2. You are using PL/SQL types instead of SQL types. That makes it impossible to use those types in SQL statements and makes it much more difficult to test since it is much easier to test a query in SQL (e.g. using sql*plus) that to embed the query in PL/SQL.
    3. You are defining the same type twice but giving it different names.
    TYPE dept_t
       IS
          TABLE OF dept%ROWTYPE
             INDEX BY binary_integer;
    TYPE dept_i_t
       IS
          TABLE OF dept%ROWTYPE
             INDEX BY binary_integer;
    Those are both based on the same DEPT table! Why the duplication?
    Also you are using associative arrays instead of just using nested tables. Get rid of the INDEX BY clause.
    4. You have some serious architectural and data model issues
    -- Assume the following scenario, we are validating dept (master) and emp(child) which are my temporary tables and updating the status back to
    -- dept ( for all the validation errors, even if we have any validation at child  it has to update the header record with error message),
    Why would you do that? You say 'it has to update the header record ...'. Says who? That is just one indication that you are trying to implement a 'solution' before you have adequately defined the 'problem'.
    Typically you would NOT alter any of the data tables; any validation errors/issues would get inserted into a table specifically designed to hold/log those issues. That table would contain key field values to correlate with the source of the error.
    Those 'master' and 'child' entities are two SEPARATE things. Issues with a 'master' row have NOTHING to do with any possible child rows.
    And issues with a 'child' row have NOTHING to do with any possible master rows. The ONLY connection between 'child' and 'master' is the foreign key that correlates them.
    So you don't necessarily have to validate the 'child' rows in sync with their 'master' row. In many cases you would have a procedure that performs validation of the entire set of 'master' rows and log those issues/problems. You would use a different procedure to validate the entire set of 'child' rows and log their issues.
    Those validation procedures can often work with ALL of the data using SQL statements instead of bulk processing.
    5. You are using loop constructs that are not valid for the type of processing you are using
    LOOP
        FETCH c1 BULK COLLECT INTO hdr_tbl;
        EXIT
      WHEN c1%NOTFOUND;
      END LOOP;
    There can be NO exit since the bulk collect with either get EVERYTHING or NOTHING. Possibly that is just a holdover from your attempt to use the LIMIT clause but you removed that clause from the FETCH; I don't know.
    There is so much wrong with what you posted it is really rather pointless to try to 'fix' it.
    I suggest you start over and clarify and DOCUMENT the actual requirements without prejudice about the solution that someone seems to want to force on you.

  • ORA-01403: no data found Problem when using AUTOMATIC ROW FETCH to populate

    ORA-01403: no data found Problem when using AUTOMATIC ROW FETCH to populate a form.
    1) Created a FORM on EMP using the wizards. This creates an AUTOMATIC ROW FETCH
    TABLE NAME - EMP
    Item Containing PRIMARY KEY - P2099_EMPNO
    Primary key column - EMPNO
    By default the automatic fetch has a ‘Process Error Message’ of ‘Unable to fetch row.’
    2) Created a HTML region. Within this region add
    text item P2099_FIND_EMPNO
    Button GET_EMP to submit
    Branch Modified the conditional branch created during button creation to set P2099_EMPNO with &P2099_FIND_EMPNO.
    If I then run the page, enter an existing employee number into P2099_EMPNO and press the GET_EMP button the form is populated correctly. But if I enter an employee that does not exist then I get the oracle error ORA-01403: no data found and no form displayed but a message at the top of the page ‘Action Processed’.I was expecting a blank form to be displayed with the message ‘Unable to fetch row.’
    I can work around this by making the automated fetch conditional so that it checks the row exists first. Modify the Fetch row from EMP automated fetch so that it is conditional
    EXIST (SQL query returns at least one row)
    select 'x'
    from EMP
    where EMPNO = :P2099_EMPNO
    But this means that when the employee exists I must be fetching from the DB twice, once for the condition and then again for the actual row fetch.
    Rather than the above work around is there something I can change so I don’t get the Oracle error? I’m now wondering if the automatic row fetch is only supposed to be used when linking a report to a form and that I should be writing the fetch process manually. The reason I haven’t at the moment is I’m trying to stick with the automatic wizard generation as much as I can.
    Any ideas?
    Thanks Pete

    Hi Mike,
    I've tried doing that but it doesn't seem to make any difference. If I turn debug on it shows below.
    0.05: Computation point: AFTER_HEADER
    0.05: Processing point: AFTER_HEADER
    0.05: ...Process "Fetch Row from EMP": DML_FETCH_ROW (AFTER_HEADER) F|#OWNER#:EMP:P2099_EMPNO:EMPNO
    0.05: Show ERROR page...
    0.05: Performing rollback...
    0.05: Processing point: AFTER_ERROR_HEADER
    I don't really wan't the error page, either nothing with the form not being populated or a message at the top of the page.
    Thanks Pete

  • Help to solve this simple problem- please

    Hi !
    Is there any method to resolve this problem.
    In my db there are 2 tables called Employee and Insurance. There fields as follows.
    Employee(empno,name,age,address,phone)
    Insurance(empno,insurName,insurCompany)
    Now I want to do this.In my HTML form,there are textboxes to input all of these data.
    Eg: empno,name,age,address,phone,insurName,insurCompany (All of these enter into 1 form)
    Now my problem is, how to save these data into the 2 seperate tables by using PreparedStatement.See am I right?
    INSERT INTO Employee,Insurance VALUES (?,?,?,?,?,?,?);
    Is it right? I'am confusing about these para's, because how can I tell to insert that first para (empno) into 2 tables.
    I using Java2 SDK,JSP,TOMCAT with MySQL db for this.
    Please anyone can answer this, help me.

    No, you need one INSERT statement for each table.

  • Problem with IN OUT Number, OUT RefCursor for EF Model StoredProcedure call

    When I call a stored procedure using the EF Model and implicit binding via App.config which has three parameters i.e. 'IN Number', 'IN OUT Number' and 'OUT sys_refcursor', the 'IN OUT Number' is not set correctly on return from the procedure.
    The 'IN OUT Number' is for an error code and is set to 12345 on input and is then set to 54321 by stored proceedure for return.
    The correct value is returned when the call is via OracleCommand using implicit binding via App.config but remains unchanged when the call is via EF Model and implicit binding via App.config.
    The ODP documentaion says you cannot have two OUT RefCursors when using EF Model but does not say you cannot have OUT RefCursor and other non-RefCursor OUT parameters.
    The idea behind this type of procedure is to have multiple input parameters to configure and filter the stored procedure and an output result set that consists of an error code and a collection of result rows in a RefCursor.
    I am using 11g R2 database and ODP 11g Release 2 (11.2.0.2.30) and ODAC Entity Framework beta.
    The query uses Scott/tiger schema with parameters department code, error code and list of employees for department.
    code:
    PROCEDURE TEST_PARAMETERS
    DEPT IN NUMBER,
    ERROR_CODE IN OUT NUMBER,
    DEPT_EMPLOYEES OUT sys_refcursor
    AS
    BEGIN
    DBMS_OUTPUT.PUT_LINE('DEPT = [' || DEPT || ']');
    DBMS_OUTPUT.PUT_LINE('ERROR_CODE = [' || ERROR_CODE || ']');
    OPEN DEPT_EMPLOYEES for SELECT empno, ename from emp where deptno = DEPT;
    -- set ERROR_CODE for return
    ERROR_CODE := 54321;
    END TEST_PARAMETERS;
    The App.config for implicit RefCursor binding is as follows ...
    <oracle.dataaccess.client>
    <settings>
    <add name="SCOTT.TEST_PARAMETERS.RefCursor.DEPT_EMPLOYEES"
    value="implicitRefCursor bindinfo='mode=Output'" />
    <add name="SCOTT.TEST_PARAMETERS.RefCursorMetaData.DEPT_EMPLOYEES.Column.0"
    value="implicitRefCursor metadata='ColumnName=EMPNO;
              BaseColumnName=EMPNO;BaseSchemaName=SCOTT;BaseTableName=EMP;
              NATIVE_DATA_TYPE=number;ProviderType=Int32;
              PROVIDER_DB_TYPE=Int32;DataType=System.Int32;
              ColumnSize=4;NumericPrecision=10;
                   NumericScale=3;AllowDBNull=false;IsKey=true'" />
    <add name="SCOTT.TEST_PARAMETERS.RefCursorMetaData.DEPT_EMPLOYEES.Column.1"
    value="implicitRefCursor metadata='ColumnName=ENAME;
              BaseColumnName=ENAME;BaseSchemaName=SCOTT;BaseTableName=EMP;
              NATIVE_DATA_TYPE=varchar2;ProviderType=Varchar2;
              PROVIDER_DB_TYPE=String;DataType=System.String;
              ColumnSize=10;AllowDBNull=true'" />
    </settings>
    </oracle.dataaccess.client>
    When the call is via OracleCommand both outputs are correct i.e. ERROR_CODE gets set to 54321 and the correct emplyees for department 10 are returned
    code:
    private void TestParametersViaOracleCommand()
    try
    string constr = "DATA SOURCE=ORCL;PASSWORD=tiger;PERSIST SECURITY INFO=True;USER ID=SCOTT";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
    OracleCommand cmd = con.CreateCommand();
    OracleDataAdapter adapter = new OracleDataAdapter(cmd);
    DataSet ds = new DataSet();
    cmd = con.CreateCommand();
    cmd.CommandText = "SCOTT.TEST_PARAMETERS";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.BindByName = true;
    OracleParameter dept = cmd.Parameters.Add("DEPT",
    OracleDbType.Int32,
    ParameterDirection.Input);
    dept.Value = 10;
    OracleParameter errorCode = cmd.Parameters.Add("ERROR_CODE",
    OracleDbType.Int32,
    ParameterDirection.InputOutput);
    errorCode.Value = 12345;
    // RefCursor output parameter implicitly bound via App.Config
    adapter = new OracleDataAdapter(cmd);
    adapter.Fill(ds);
    // should be 54321 and is ...
    Console.WriteLine("after call errorCode.Value = " + errorCode.Value);
    Console.WriteLine("list size = {0}", ds.Tables[0].Rows.Count);
    // only one table
    DataTable deptEmployeesTable = ds.Tables[0];
    for (int ii = 0; ii < deptEmployeesTable.Rows.Count; ++ii)
    DataRow row = deptEmployeesTable.Rows[ii];
    Console.WriteLine("EMPNO: " + row[0] + "; ENAME: " + row[1]);
    catch (Exception ex)
    // Output the message
    Console.WriteLine(ex.Message);
    if (ex.InnerException != null)
    // If any details are available regarding
    // errors in the app.config, print them out
    Console.WriteLine(ex.InnerException.Message);
    if (ex.InnerException.InnerException != null)
    Console.WriteLine(
    ex.InnerException.InnerException.Message);
    output:
    before call errorCode.Value = 12345
    after call errorCode.Value = 54321 (should be 54321!)
    list size = 3
    EMPNO: 7782; ENAME: CLARK
    EMPNO: 7839; ENAME: KING
    EMPNO: 7934; ENAME: MILLER
    However when call is via EF Model the correct employees are returned but the ERROR_CODE parameter is unchanged on return.
    code:
    private void TestParametersViaEFModel()
    var context = new ScottEntities();
    Decimal dept = 10;
    ObjectParameter errorCodeParameter = new ObjectParameter("ERROR_CODE", typeof(decimal));
    errorCodeParameter.Value = 12345;
    Console.WriteLine("before call errorCodeParameter.Value = " + errorCodeParameter.Value);
    // RefCursor output parameter implicitly bound via App.Config
    var queryResult = context.TestParameters(dept, errorCodeParameter);
    // should be 54321 and is ...
    Console.WriteLine("after call errorCodeParameter.Value = " + errorCodeParameter.Value + " (should be 54321!)");
    List<TestParameters_Result> deptEmployeesList = queryResult.ToList();
    Console.WriteLine("list size = {0}", deptEmployeesList.Count);
    for (int ii = 0; ii < deptEmployeesList.Count; ++ii)
    TestParameters_Result result = deptEmployeesList[ii];
    Console.WriteLine("EMPNO: " + result.EMPNO + "; ENAME: " + result.ENAME);
    output:
    after call errorCodeParameter.Value = 12345 (should be 54321!)
    list size = 3
    EMPNO: 7782; ENAME: CLARK
    EMPNO: 7839; ENAME: KING
    EMPNO: 7934; ENAME: MILLER
    errorCodeParameter.Value IS NOT CORRECTLY RETURNED!
    If there is no RefCursor then both outputs are identical i.e. the parameters are being passed in correctly and the problem is not with the 'IN OUT' parameter. Also same thing is true if ERROR_CODE is made an OUT parameter. Also tried changing the position of the parameter in the list but still get same problem i.e. works when OracleCommand but not when EF Model. Also note that the RefCursor results are correct for both types of call i.e. it is just a problem with the value of the 'IN OUT ERROR_CODE' parameter.
    I have also enabled debug stepping from Visual Studio 2010 into Oracle PL/SQL as described in
    "http://st-curriculum.oracle.com/obe/db/hol08/dotnet/debugging/debugging_otn.htm"
    and have verified by inspection that the correct values are being passed into the stored procedure and that the stored procedure is definitely setting the ERROR_CODE to 54321 prior to return.
    Most of our stored procedures have these type of parameters i.e. several IN params to configure the work of the stored procedure, an OUT NUMBER parameter for the Error_Code if any and a RefCursor for the result list.
    Is this a bug or a feature? Am I doing something wrong?

    Just to clarify ....
    If the ERROR_CODE parameter is made an 'OUT' parameter instead of an 'IN OUT' parameter the correct return value is given for the OracleCommand invocation but the WRONG value is still returned for the EF Model invocation i.e. just changing the parameter from 'IN OUT' to just 'OUT' does not fix the problem.

  • Problem with correlation

    Hi ,
    I am trying a N : 1 scenario using BPM , I have used correlation for this ,
    This is the procedure i have used
    1 . Block :
                Properties of block : Block start --> New Transaction
                                              Block End  --> New Transaction
                                              Local Correlation ---> CORRELATION
               Two receive steps inside the block .
               a. Receivestep1
                       Properties of Receivestep : Start Process check box ticked.
                       Activate Correlation          : CORRELATION
                       CORRELATION
                        EMPNO
              b. Receivestep2
                     Properties of Receivestep :
                        Use Correlation : I am facing Problem Here
    I am unable to use the correlation , when ever i select it n save the Use Correlation text box appear with ? symbol , due to which i cannot activate the integration process , How can i solve it..
    Regards,
    Syed

    Hi Syed,
                Once u have activated your integration process than you want to make any changes particularly on correlation editor you will observe this kind of behaviour.
    Solution:
    Step1:  Better to copy integration process with some temp say <int.prcess_name>_temp then make changes in newly created one and activate newly created integration process.
    Step2: Delete the orginal int.process and activate change list.
    Step3: Copy the newly created int.process with name say <int.proces_name>_temp to orginal name
    i.e <int.process_name> then delete the <int.proces_name>_temp and activate the change list.
    This is work around solution for your problem.
    Regards,
    Rao.Mallikarjuna

  • Problem in sql query because of order by clause

    Hi All,
    I am facing a one problem in my one sql query.I am using Oracle 10gR2.
    Query is given below:
    SELECT t1.ename
            FROM T1, T2
           WHERE T1.EMPNO = 1234
             AND T1.ACCOUNTNO = T2.ACCOUNTNO
             AND T1.SEQ = T2.SEQ
           ORDER BY T2.SEQThe Plan of the query is :
    | Id  | Operation                     | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT              |                      |     2 |   218 | 11716   (1)| 00:00:41 |
    |*  1 |  TABLE ACCESS BY INDEX ROWID  | T1                   |     1 |    89 |     1   (0)| 00:00:01 |
    |   2 |   NESTED LOOPS                |                      |     2 |   218 | 11716   (1)| 00:00:41 |
    |*  3 |    TABLE ACCESS BY INDEX ROWID| T2                   |     2 |    40 | 11715   (1)| 00:00:41 |
    |   4 |     INDEX FULL SCAN           | PK_T2_SEQ            | 58752 |       |   122   (5)| 00:00:01 |
    |*  5 |    INDEX RANGE SCAN           | FK_ACCOUNTNO         |     3 |       |     0   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------------------Now i want to reduce the time of this query.
    If i am removing Order by clause from query than performance of the query is totally perfect but with order by clause its taking a time.
    I have already set SORT_AREA_SIZE but still nothing is improving.
    Welcome and thanks for your suggestions.
    Thanks,
    Edited by: BluShadow on 23-Jun-2011 07:55
    added {noformat}{noformat} tags and formatted explain plan to make it readable.  Please see {message:id=9360002} for details on how to post code and data                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Hi,
    There are a couple of things I do not understand.
    1. Why don't you put {noformat}{noformat} around your code, it makes it so much easier to read, especially your explain plan
    2. You claim that the ORDER BY is problematic compared to no order by. Then why do you choose to post only one plan?
    3. It is hard to understand how your tables relate, and which indexes you have and which you don't.
    - PK_T2_SEQ, does this mean that SEQ alone is primary key of T2?
    - If SEQ is primary key of T2, why do you join on accountno, seq and not just seq?
    - If SEQ is primary key of T2 one of the tables is denormalized.
    4. FK_ACCOUNTNO, is this an index on accountno, alone?
    - Or is this AccountNo, Seq?
    5. Is there no index on T1.EMPNO?
    Above could of course just be a case of my not understanding the names of your indexes.
    So, here are my guesses:
    Above plan is for the ORDER BY query. That means the optimizer, has chosen to full scan PK_T2_SEQ, since data is then read according to the ORDER BY.
    (This could be a bad choice)I
    You could try and order by t1.seq, instead. Result should be the same.
    Regards
    Peter                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

Maybe you are looking for

  • Apple support page "generic error" message when I want to open a case

    the case is 2 folds, I been trying to register my ipad 2, which I bought at the same time and location togther with macbook pro 13", the macbook product registration went throuh fine, but for the iPad I got the message that the product is already reg

  • Is there a preferred format of XML that can be laoded into an Oracle table?

    XML files vary quite a bit. From mere fragments to file carrying schema, etc. What is the preferred format of an XML file that can be loaded into an Oracle table assuming that the Schema agrees with the table structure. It does not seem to load an XM

  • Re: Keyoard issue

    Hi, I experie ce the same as trgw. I have a HP e vy X2 with dockig statio . I am curre tly missi g the  utto s: b n delete f12 caps lock = + (this was typed with the touch screen keyboard) Updates of windows and driversbhave been carried out. Can you

  • I can hear a childrens show playing whenever I go online, how to stop this please.

    My grandchildren go to pbs.org and and play games and watch videos on my computer. Now one of the shows keeps playing in the background whenever I go online. I have no idea how to delete it from the system. FIrefox is the only browser I have this iss

  • Can a SWF have more than one page?

    My client wants to do an internet microsite from an interactive document I created in InDesign CS5... I exported it as a .swf, but every page is its own file. I have never used Flash, so I am a bit lost. The client needs to have all 18 pages of my la