Storage structured by different record types in a single column

It is more a matter of theory (10g R2), rather than a real problem that I have, just wondering if this is possible and everybody else has done before.

I have 2 tables, in a test env:

CUST
- - - -
number of cust_id
name varchar2
date of date of birth

ACCOUNT
- - - - - - -
number of cust_id
number of acc_id

I have an obligation to update two tables every morning with a set of static data, for testing purposes.

Is it possible to create a single table, which allows to store the records in two tables, that is to say...

-J' I create an object type for both structures Records

-Create a new table record above types with 1 column that indicates if the record is CUST/ACCOUNT and the second column, a kind of generic type object that can store either.

In this way, refresh code that runs each morning just one table to loop through, and depending on whether a CUST/ACCOUNT can run different sql to do the select / insert.

PS I have not access to the db at the min so have failed to try it before posting, just thought I would check first of all in case its not feasible.

Thanks in advance.

SMON wrote:
liked the idea of having a unique and central table to store all data, instead of x number of tables and overhead that comes with them. (x could be 2 or 200!).

This may seem attractive, but then you get into the realms of design model of Entity attribute value. There, throughout the history of computing, proved to be a very bad way to design databases.

Here is a link to a story on a company that did come down from this kind of route... (Boneist link ;)) favorite...)

[Bad CaRMa | http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/]

There are a few people out there who insist it is a good method of design, but they are rare and usually their arguments in support of such a structure are inherently flawed. RDBMS is designed to better deal with the data stored in a relational structure (whether for OLTP or OLAP) relational design is therefore preferable and more efficient in almost all cases.

Tags: Database

Similar Questions

  • A field validation can point to a different record type fields?

    Validation of field based on another field of registration Type

    I am trying to generate a validation in a custom object that summarizes the fields under the record type account.

    The names of the fields of OBI (the location and the name of the table field):
    "- Take into account the custom settings. S_INT_13 + ""-account of custom settings '. " S_INT_14 + ""-account of custom settings '. " S_INT_11

    My questions: peut a field validation, point to a different record type fields? My thought was that if OBI can look in all of the types of records that all CRM must be able, including field validations.

    Thank you

    David

    Hello!

    I'm afraid that's not possible at the moment. You will have to wait for version 16, I think that having such opportunities.
    The R16 will allow you to create a workflow through different types of records (for example, to create a task on the account related to the service request when a new service request is created). I hope that there will be equal opportunities with the validation rules...

    Hope this will help, do not hesitate to ask for more.

    Max

  • How to put different images (image by record type) in native obiee table

    Hi, how to put different images (image by record type) in native obiee table?

    for example, the image is for the banana (record 1, row1)
    Picture B is for orange (record2, line 2)

    I know it's possible in mode narrative but I must manually apply CSS

    Thank you!

    Please take a look at this post on top of this message to activate the image column value interaction with target report i.e. (record 1, row1)

  • PLS-00362: Invalid cursor return type; 'NUMBER' must be a record type

    Hello

    Having a little trouble with the following code example provided to http://www.dba-oracle.com/plsql/t_plsql_cursor_variables.htm:
      1  DECLARE
      2    TYPE t_ref_cursor IS REF CURSOR RETURN NUMBER;
      3    c_cursor  t_ref_cursor;
      4    l_row   NUMBER;
      5  BEGIN
      6    DBMS_OUTPUT.put_line('Strongly typed REF CURSOR using SCALAR type. Expect an error!');
      7    OPEN c_cursor FOR
      8      SELECT COUNT(*) cnt
      9      FROM   cursor_variable_test;
     10    LOOP
     11      FETCH c_cursor
     12      INTO  l_row;
     13      EXIT WHEN c_cursor%NOTFOUND;
     14      DBMS_OUTPUT.put_line(l_row);
     15    END LOOP;
     16    CLOSE c_cursor;
     17* END;
     18  /
      TYPE t_ref_cursor IS REF CURSOR RETURN NUMBER;
                           *
    ERROR at line 2:
    ORA-06550: line 2, column 24:
    PLS-00362: invalid cursor return type; 'NUMBER' must be a record type
    ORA-06550: line 2, column 3:
    PL/SQL: Item ignored
    In the code above, SELECT COUNT (*)... returns a NUMBER. I know it's an aggregation function, but it returns a single value.
    Why can't return a value in a column of a row in a NUMBER?
    How can I change the SQL code so that I can do this?

    Furthermore, I wonder about the use of FETCH with a count (*)... FETCH is supposed to fetch the next row... How it works when you select an aggregate as County?

    Thank you very much
    Jason

    >
    TYPE t_ref_cursor IS REF CURSOR RETURN NUMBER;
    *
    ERROR on line 2:
    ORA-06550: line 2, column 24:
    PLS-00362: Invalid cursor return type; 'NUMBER' must be a record type
    ORA-06550: line 2, column 3:
    PL/SQL: Ignored Element

    In the code above, SELECT COUNT (*)... returns a NUMBER. I know it's an aggregation function, but it returns a single value.
    Why can't return a value in a column of a row in a NUMBER?
    How can I change the SQL code so that I can do this?
    >
    The exception is in line 2: your cursor statement. And the answer is in the text that you access
    >
    The return value of a strongly typed REF CURSOR must be a folder that can be defined using % TYPE % ROWTYPE attributes or record structure.
    >
    You said the CURSOR to return a NUMBER. And as the text says, he must be a 'record '.
    >
    Furthermore, I wonder about the use of FETCH with a count (*)... FETCH is supposed to fetch the next row... How it works when you select an aggregate as County?
    >
    As you said already FETCH retrieves the next line, if any. A query is a request is a request. It returns a result set. A query that uses aggregates returns a result set. A query that does not aggregate returns a result set.

    Your simple COUNT (*) SELECT query returns a result set that consists of a LINE and a line a ONE COLUMN of type NUMBER. Although there is only one column in the result set, what is returned is a RECORD or a LINE. That's why you have to report your data cursor return type a document using the % ROWTYPE or % TYPE attributes or a record structure.

  • Dynamic SQL with in bulk in the record type

    Oracle 10.2 g

    I received this Tom

    [http://asktom.oracle.com/pls/apex/f?p=100:11:0:NO:]

    I'm able to do this without dynamic SQL, but my requirement is to do it in dynamic SQL
     create table t1 ( x int, y int );
    
     insert into t1 select rownum, rownum+1 from all_users where rownum <= 5;
    
     create table t2 ( x int, y int, z int );
    
     declare
                type array is table of t1%rowtype;
                l_data array;
        begin
                select * bulk collect into l_data from t1;
      
                forall i in 1 .. l_data.count
                
                       execute immediate 'insert into (select x, y from t2) values :x' using l_data(i);
        end;
     
    Error at line 1
    ORA-06550: line 9, column 90:
    PLS-00457: expressions have to be of SQL types
    ORA-06550: line 9, column 20:
    PL/SQL: Statement ignored
    There is a work around in 11g, but can we do something in 10g?



    Thank you
    HESH.

    HESH wrote:

    but following does not.

    declare
    type array is table of t1%rowtype;
    l_data array;
    begin
    select * bulk collect into l_data from t1;
    
    forall i in 1 .. l_data.count
    
    execute immediate 'insert into (select x, y from t2) values :x' using l_data(i);
    end;
    

    I want just a dynamic SQL code for the insert with FORALL statement would adopt as well as collections.

    Doesn't make much sense.

    Extract you the data from the SQL engine in the table of the record type. If the output data that cursor SQL must be read in the SQL engine and copied into the memory of PL/SQL engine.

    Then, you send that VERY SAME DATA back to the SQL engine to be used by a SQL insert cursor.

    Where is the logic behind the extraction of data from SQL in a PL/SQL table structure and then push this same structure table on the SQL engine database? What is the purpose to send data on a detour of underperforming and non-scalale through the PL/SQL engine?

    You have any justification (technical or functional wise) to back up this absurd approach?

    Why this can be achieved using a single SQL cursor that does both the choice (extraction) and (in bulk) insertion - using the plain old INSERT... SELECT structure?

    And if the insert is variable, then what? Create a dynamic INSERT... SELECT cursor and execute it (using bind values). This simple... Right?

  • How to convert an array of string elements to a cluster with elements named different data types?

    I'm looking for more help with the conversion of an array of elements of the chain in a cluster containing elements named different data types.

    I am importing data from an Excel worksheet.  He is coming in LabVIEW as separate (channels) 3 tables: 1) Variable name, (2) three possibilities Int, double, String) data type and the value 3), with the clues in each table corresponding to a separate variable (I have about 180 variables to import).  My ultimate goal is to convert the string array of 'Value' in a cluster.  But I want the correct data type in the cluster and I also the elements of the cluster name to match with the string 'Variable name' table so that I can use the Unbundle based on the name in my main VI.

    Please see attachment a Subvi for more details.  I did the size of the new items of tables 5 for simplicity.   I realize that labels property cannot be changed during execution and I don't think I need to do.  I just want to use the production cluster (mainly the unbundle by name) to help design my main VI.  I will need to 'read' and 'write for' the cluster during execution, but I won't need to change the names of the items.

    I was also wondering if there is a better way to import data from Excel?  Is it possible to import directly into a cluster immediately rather than put everything as strings?  I have attached a Subvi showing how I currently bring in data (found on the forum somewhere).  It comes as table 2D, which I divided into 3 separate tables that I mention above.

    I am open to any suggestion.  Thank you very much.

    -Mike

    Instead of trying to create a cluster, I think I would use only variant attributes.

  • Why do you have different file types?

    Why are there different file types (pdf, http and others) that you need for different programs to open?

    Why are there different containers (aluminum cans, plastic bottles, glass jars, etc.) that you need different tools to open?

    The answer is because each kind of file has that the others don't, and if you need different programs access to these features.

  • objects and the record type

    Hello experts.

    create type emp2_obj is object
    (
    objno number
    ,
    objname varchar2
    (20),
    objdept number
    );

    create type emp2_objarr is table of emp2_obj;

    and

    type emp2_rec is record
    (
    recno number
    ,
    recname varchar2
    (20),
    recdept number
    );

    create type emp2_recarr is table of emp2_rec ;

    Objects and types of records are created similar and have the same similar object.  Is it only advisable to use registration type if you use a collection in PL/SQL type... Please advice

    user13328581 wrote:

    the only reason why I ask is because he asked during an interview

    -Objects and the types of records are created similar and have the same similar object.  Is it only advisable to use registration type if you use a collection in PL/SQL type... Please advice

    Not at all.  You can use record types used with collection types outside.  They are a group concept.  If you want to group a set of values together (including fields), you can use a record.  It may be convenient.  You can send documents around proc and functions.

    Be aware that the record types are limited to procedures, functions, anonymous blocks and packages (i.e. PL/SQL), while the types of objects are stored in the dictionary of data as a separate Oracle objects (they can also have methods, the records may not).  Object types can be used in SQL, as said sol.beach types of records (outside of the intelligent pipeline situations) is for PL/SQL.

  • record type

    Hi all

    create the table wages (a number;

    b the number);

    --=================================================

    declare

    type record_salary is record

    (rec_salary % rowtype salary,

    number of rec_num);

    type type_salary_tab is table of the record_salary

    index by pls_integer;

    tab_rec type_salary_tab;

    Start

    Select a, b, sum (b)

    bulk collect into tab_rec

    salary;

    end;

    get an error: expression tab_rec in the list is of the wrong type...

    IF I can create the folder table, and I'm not bulk collect into it so that it uses for?

    Thanks in advance

    Hello

    Please try the below.

    DECLARE

    Record_salary RECORD TYPE IS

    (

    rec_salary NUMBER,

    rec_num NUMBER,

    NUMBER OF SUM_OF_REC

    );

    TYPE type_salary_tab IS TABLE OF THE record_salary

    INDEX BY PLS_INTEGER;

    tab_rec type_salary_tab;

    BEGIN

    SELECT a, b, SUM (b)

    LOOSE COLLECTION tab_rec

    ON treatment

    GROUP BY A, B;

    DBMS_OUTPUT. Put_line (tab_rec. COUNT);

    END;

    1 group by is missing

    2 guy's got that two elements

    3. has changed the type of line to the number in the type declaration

    Kind regards

    Cool

  • Record Type in need help package tests

    Hello

    Please can you help me in the record Type of tests that I defined as:

    I said record Type in the package TEST_PART_PKG

    CREATE OR REPLACE PACKAGE TEST_PART_PKG AS

    TYPE req_line_rec_type () IS RENDERING

    PART_NUMBER VARCHAR2 (100),

    part_line_num NUMBER,

    part_name VARCHAR2 (100),

    part_po_number VARCHAR2 (100),

    un_number NUMBER,

    part_class VARCHAR2 (20).

    part_org_name VARCHAR2 (50));

    TYPE req_line_tbl IS TABLE OF THE req_line_rec_type

    INDEX OF DIRECTORY;

    PROCEDURE update_part_line)

    IN OUT NOCOPY p_req_line_tbl req_line_tbl,

    p_init_msg IN VARCHAR2,

    p_req_line_tbl_out OUT NOCOPY req_line_tbl,

    p_req_line_err_tbl OUT NOCOPY req_line_tbl,

    p_submit_approval IN VARCHAR2,

    x_return_status OUT NOCOPY VARCHAR2,

    x_error_msg OUT NOCOPY VARCHAR2,

    p_commit IN VARCHAR2);

    END;

    I want to test the procedure in the package passing variables but how to approach to it?

    I want to call the procedure packaged using:

    DECLARE

    BEGIN

    TEST_PART_PKG. update_part_line

    END;

    v_req_line_out and v_req_line_err are the parameters, so they do not need initialization, just definition what is the procedure to put something that is.

    We can only guess the purpose of these two parameters. Maybe you need to separate the records updated the destination of those that out wrong for further treatment table and that you are able to present a table of rows to update the destination table, the two parameters must be tables of rows as in general, more a single record can be the source of updated and more than one record can mistake.

    Concerning

    Etbin

  • XMLTYPE with record type

    Hi friends,

    Is it possible to use XMLTYPE with record types?

    For example, in the following code I expect output voltage

    < TY_EMP > < > 1001 EMPNO < / EMPNO > < ADAMS ENAME > < / ENAME > < SAL > 5000 < / SAL > < TASK MANAGER > < / JOB > < / TY_EMP >

    The code is...

    DECLARE

    Ty_emp RECORD TYPE IS

    (

    EmpNo INTEGER

    , ename VARCHAR2 (100)

    NUMBER of sal

    , VARCHAR2 (100) employment

    );

    r_emp ty_emp;

    BEGIN

    r_emp.EmpNo: = 1001;

    r_emp. Ename: = "Adams";

    r_emp. SAL: = 5000;

    r_emp.job: = "MANAGER";

    -This line gives the error.

    dbms_output.put_line (XmlType (r_emp). GETSTRINGVAL()); -Here, I don't want to talk about all the fields in the record. I just need to specify the name of the record.

    END;

    p.s. to use object types to generate XML data...

    SQL > ed
    A written file afiedt.buf

    1 TYPE to CREATE or REPLACE ty_emp () AS OBJECT
    2 empno INTEGER
    3, ename VARCHAR2 (100)
    4, NUMBER of sal
    5, job VARCHAR2 (100)
    6*   );
    SQL > /.

    Type of creation.

    SQL > ed
    A written file afiedt.buf

    1 DECLARE
    2 r_emp ty_emp: = new ty_emp (null, null, null, null);
    3 BEGIN
    4 r_emp.empno: = 1001;
    r_emp.ename 5: = "Adams";
    6 r_emp.sal: = 5000;
    7 r_emp.job: = "MANAGER";
    8 dbms_output.put_line (XMLTYPE (r_emp) .getstringval ());
    9 * END;
    SQL > /.
    1001 Adams 5000 MANAGER

    PL/SQL procedure successfully completed.

    SQL >

  • Using record type and Table and sorting out output

    I use a record type

    • TYPE results_rec is RECORD)
    • table_ varchar2 (40),
    • (1) tank Create_: = '-'.
    • (1) tank read_: = '-'.
    • Char (1) warning: = '-'.
    • Delete_ char (1): = '-');

    and a table of this record

    • Results_tab TYPE IS TABLE of results_rec INDEX OF VARCHAR2 (40);
    • tab_res results_tab;
    • table_indx varchar2 (40);

    And when I add values to this table, I do like that, for example, an entry of functioning drop in table:

    • v_check: = instr2 (v_string_fnc, 'DROP');
    • If v_check > 0 then
    • counter: = counter + 1;
    • delete_flag: = ';
    • v_check: = instr2 (v_string_fnc, 'TABLE', v_check);
    • v_check: = v_check + 6;
    • result_table: = substr (v_string_fnc, v_check);
    • rest_string: = result_table;
    • result_table: = substr (result_table, 0, instr (result_table, ' '));
    • result_table: = rtrim (result_table);
    • table_indx: = result_table;
    • tab_res (table_indx) .table_: = result_table;
    • tab_res (table_indx) .delete_: = delete_flag;

    and similar to all other interventions, but how to get while dbms_output.

    For table_indx in? and now, table_indx is a string value, how to get all the in the output, sorted by ASC .table_ tab_res (table_indx) string?

    Well, tab_res. FIRST returns the first index of tab_res which is a VARCHAR2, while an index of the loop is supposed to be a NUMBER.

    You cannot use FOR... LOOP element, you use WHILE... LOOP, for example

    SQL > SET SERVEROUTPUT ON;

    SQL > DECLARE

    2 TYPE Results_rec IS RECORD)

    3 table_ VARCHAR2 (40),

    4 create_ VARCHAR2 (1): = '-'.

    5 read_ VARCHAR2 (1): = '-'.

    6 warning VARCHAR2 (1): = '-'.

    7 delete_ VARCHAR2 (1): = '-');

    8

    9 results_tab TYPE IS an ARRAY OF results_rec

    10-VARCHAR2 INDEX (40);

    11

    12 results results_tab;

    13

    14 variable_name VARCHAR2 (40);

    BEGIN 15

    16 results ('name_a') .table_: = 'name_a ';

    17 results ('name_a') .create_: = 'x '.

    18

    19 results ("name_b') .table_: = 'name_b;

    20 results ("name_b') .update_: = 'x '.

    21

    22 results ("name_c") .table_: = "name_c";

    23 results ("name_c") .read_: = 'x '.

    24 results ("name_c") .delete_: = 'x '.

    25

    26 nom_de_variable: = results. FIRST;

    27

    28 variable_name IS NOT NULL LOOP

    29

    30 DBMS_OUTPUT. PUT_LINE)

    31 results (variable_name) .table_ | ' ' ||

    32 results (variable_name) .create_ |

    33 results (variable_name) .read_ |

    34 results (variable_name) .update_ |

    35 results (variable_name) .delete_);

    36

    nom_de_variable 37: = results. NEXT (variable_name);

    38 END LOOP;

    39 END;

    40.

    name_a x-

    name_b - x-

    name_c - x - x

    PL/SQL procedure successfully completed.

    SQL >

  • Return the record type


    Hello

    I have a requirement of the company, where I need to return a record type (OUT parameter) for environment call based on the given input value.

    Suppose that if the value is correct and corresponding record is found in the table then the return values for this key entry. If matching record is found, then return the exception to the calling environment.

    To do this, I created an example of test table and populated records.

    create table plch_test(dept_id number,dept_name varchar2(50),cost_centre number);
    insert into plch_test values(10,'SALES',1010);
    insert into plch_test values(20,'FINANCE',2010);
    insert into plch_test values(30,'MKTG',3010);
    
     
    SQL> select * from plch_test;
       DEPT_ID DEPT_NAME                                          COST_CENTRE
    ---------- -------------------------------------------------- -----------
            10 SALES                                                     1010
            20 FINANCE                                                   2010
            30 MKTG                                                      3010
    
     
     
    

    I wrote a simple block and gave a valid key dept_id (10 in this case) to display costcentre for this dept_id and dept_name I said tow types of records, one for valid record and another exception

    
    

    SQL> DECLARE 
      2  TYPE rec_dept IS RECORD(dept_name varchar2(50),cc number);
      3  l_rec_dept rec_dept;
      4  TYPE rec_exception IS RECORD(err_code number,error_message varchar2(300));
      5  l_rec_exception rec_exception;
      6  BEGIN
      7  SELECT dept_name,cost_centre
      8  INTO l_rec_dept
      9  FROM plch_test
     10  where dept_id=10;
     11  dbms_output.put_line('DEPT_NAME'||' '||l_rec_dept.dept_name||' '||'COSTCENTRE'||' '||l_rec_dept.cc);
     12  EXCEPTION WHEN NO_DATA_FOUND THEN
     13  l_rec_exception.err_code:=sqlcode;
     14  l_rec_exception.error_message:=sqlerrm;
     15  dbms_output.put_line(l_rec_exception.err_code||' '||l_rec_exception.error_message);
     16  END;
     17  .
    SQL> /
    DEPT_NAME SALES COSTCENTRE 1010
    PL/SQL procedure successfully completed.
    SQL> 
    
     
    

    Now for invalid dept_id and expose the message by using exception record type I stated.

    SQL> ed
    Wrote file afiedt.buf
      1  DECLARE
      2  TYPE rec_dept IS RECORD(dept_name varchar2(50),cc number);
      3  l_rec_dept rec_dept;
      4  TYPE rec_exception IS RECORD(err_code number,error_message varchar2(300));
      5  l_rec_exception rec_exception;
      6  BEGIN
      7  SELECT dept_name,cost_centre
      8  INTO l_rec_dept
      9  FROM plch_test
     10  where dept_id=40; --Invalid --data is not present
     11  dbms_output.put_line('DEPT_NAME'||' '||l_rec_dept.dept_name||' '||'COSTCENTRE'||' '||l_rec_dept.cc);
     12  EXCEPTION WHEN NO_DATA_FOUND THEN
     13  l_rec_exception.err_code:=sqlcode;
     14  l_rec_exception.error_message:=sqlerrm;
     15  dbms_output.put_line(l_rec_exception.err_code||' '||l_rec_exception.error_message);
     16* END;
    SQL> /
    100 ORA-01403: no data found
    PL/SQL procedure successfully completed.
    
    

    Now as you can see I need to include this point in a procedure with an input parameter and output must be a record types which will return

    rec_dept if it becomes a key input valid or an exception if she meets a key not valid.

    
    CREATE PROCEDURE test_prc IS(p_in_dept_id IN plch_test.dept_id,p_output ??????
    DECLARE 
    TYPE rec_dept IS RECORD(dept_name varchar2(50),cc number);
    l_rec_dept rec_dept;
    TYPE rec_exception IS RECORD(err_code number,error_message varchar2(300));
    l_rec_exception rec_exception;
    BEGIN
    BEGIN
    SELECT dept_name,cost_centre
    INTO l_rec_dept
    FROM plch_test
    where dept_id=p_ind_dept_id;
    RETURN l_rec_dept;
    EXCEPTION WHEN NO_DATA_FOUND THEN
    l_rec_exception.err_code:=sqlcode;
    l_rec_exception.error_message:=sqlerrm;
    RETURN l_rec_exception;
    END;
    dbms_output.put_line('DEPT_NAME'||' '||l_rec_dept.dept_name||' '||'COSTCENTRE'||' '||l_rec_dept.cc);
    END;
    

    Hope that the explanation above help in imposes the requirement

    Kind regards

    Claudy kotekal

    Return a record which can mean two things is complicated; I'm not an experienced myself pl/sql developer, but this looks like a craft.

    The idea of exceptions under Sir Thomas of Kyte, is that any treatment must be stopped; You should RAISE an exception to the appellant so that he can figure out what to do with it.  What you are saying, this is an exception, but is not a little, cos it's okay, I'll just keep but I will go back to the appellant in any way, but the appellant shall include this registration type is - would it be a record representing a row of the table, or it might be an exception... yuck.

    (a) is it really an exception

    (b) what do you do with it? You he could log into a table, you could write to a file, you can display an error message on the screen

    But really, it's weird to want to pass an exception as return value.

    These are all considerations of design, not really anything to do with the pl/sql language in itself.

    But hard, if you send a record type a successful being found, registration-based stick to it and don't use it to return a record; do not try to do double duty with her flipping something else.  Just save the message put in a table, or print it to the console, or what you want to do with; but as I said, the most important decision is, is this really an exception. And is based on the data model and the expectations of cleanliness of the data etc.

    Think about how you call built-in functions. If you send garbage to a built-in function it does not return successfully, leaving you to figure out whether he succeeded or not by inspecting the return value; It goes kaboom, something bad happened.  That's what your function should do if something bad happens, that is to say, if you get an exception, it should probably go kaboom.

  • How to use the record type as a parameter IN PL/SQL procedure or package

    Hi people,

    I need help on the record as the OUT parameter type. I am able to get out a single line as a parameter, but not getting do not idea how to get a multi ranks as output parameter.

    I have the code that works very well for a single line. Please see CODE1.

    But when I try to get several lines, I'm failing to do. Please see the CODE2. I get the error of compilation as


    Error report:

    ORA-06550: line 11, column 35:

    PLS-00487: Invalid reference to the variable "P_NAME.

    ORA-06550: line 11, column 1:

    PL/SQL: Statement ignored

    06550 00000 - "line %s, column % s:\n%s".

    * Cause: Usually a PL/SQL compilation error.

    Any help or a sample execution of script would be really useful.

    Thanks in advance.

    YZ

    --------------------------CODE1------------------------------------------

    -------------------------Package Spec-------------------------------

    CREATE OR REPLACE

    PACKAGE xx_sample_pkg as

    --

    Xx_sample_table_rectype RECORD TYPE IS

    (p_name varchar2 (40))

    number of p_emp_id

    );

    PROCEDURE xx_sample_prc (xx_sample_rec1, OUT xx_sample_table_rectype);

    END xx_sample_pkg;

    ------------------------------Package Body------------------------

    create or replace

    PACKAGE xx_sample_pkg AS BODY

    --

    PROCEDURE xx_sample_prc (xx_sample_rec1 OUT xx_sample_table_rectype) IS

    BEGIN

    SELECT ename, empno

    IN xx_sample_rec1

    FROM scott.emp

    WHERE ename = 'SMITH ';.

    END xx_sample_prc;

    END xx_sample_pkg;

    -------------------------------------------Execute----------------------

    DECLARE

    l_rec_type xx_sample_pkg.xx_sample_table_rectype;

    BEGIN

    dbms_output.put_line ('xx_sample_prc appeal');

    xx_sample_pkg.xx_sample_prc (l_rec_type);

    dbms_output.put_line ('YZ' | l_rec_type.p_name |') '|| l_rec_type.p_emp_id);

    END;

    ---------------------------------------------------------------

    -------------------------CODE2-------------------------------------------

    -------------------------Package Spec-------------------------------

    CREATE OR REPLACE

    PACKAGE xx_sample_pkg as

    --

    Xx_sample_table_rectype RECORD TYPE IS

    (p_name varchar2 (40))

    number of p_emp_id

    );

    PROCEDURE xx_sample_prc (xx_sample_rec1, OUT xx_sample_table_rectype);

    END xx_sample_pkg;

    ------------------------------Package Body------------------------

    create or replace

    PACKAGE xx_sample_pkg AS BODY

    --

    PROCEDURE xx_sample_prc (xx_sample_rec1 OUT xx_sample_table_rectype) IS

    BEGIN

    SELECT ename, empno

    IN xx_sample_rec1

    FROM scott.emp;

    END xx_sample_prc;

    END xx_sample_pkg;

    -------------------------------------------Execute----------------------

    DECLARE

    l_rec_type xx_sample_pkg.xx_sample_table_rectype;

    BEGIN

    dbms_output.put_line ('xx_sample_prc appeal');

    xx_sample_pkg.xx_sample_prc (l_rec_type);

    for l_rec in 1.l_rec_type.p_name.count

    loop

    dbms_output.put_line ('YZ' | l_rec_type.p_name (l_rec) |) » '|| l_rec_type.p_emp_id (l_rec));

    end loop;

    end;

    ---------------------------------------------------------------

    bb8c573a-6ca3-4d7c-90ed-e55c2df67201 wrote:

    But now, my question would be why the record type could not be used? My understanding is missing some concept between use of type type array collection record vs. Please specify.

    Do not confuse the folder with the collection.

    SY.

  • Manufacturers of record Type in packages

    I'm having trouble getting this error. Here is an example of my code:
    create or replace
    PACKAGE MyPackage AS
      TYPE MyPerson IS RECORD ( "NAME"  VARCHAR2(255 CHAR) );
      FUNCTION GetPerson RETURN MyPerson;
    END MyPackage;
    create or replace
    PACKAGE BODY MyPackage AS
      FUNCTION GetPerson RETURN MyPerson
      AS
        John MyPerson := MyPerson('John');
      BEGIN
        RETURN John;
      END GetPerson;
    END MyPackage;
    After executing these separately, I get the following errors when executing the BODY of PACKAGE statement:
    Error (6,10): PL/SQL: ignored element
    Error (6.22): PLS-00222: no function with name "MYPERSON" does exist in this scope
    Error (8.5): PL/SQL: statement ignored
    Error (8,12): PLS-00320: the declaration of the type of the expression is incomplete or incorrect
    is there a particular reason, I can't use a type defined in the PACKAGE header?

    Select * from V$ Version:
    database Oracle 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    "CORE 11.2.0.3.0 Production."
    AMT for Linux: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production
    EDIT: formatting and v$ version

    Published by: 961346 Sep 25, 2012 12:39

    Hello

    MyPerson is a record type, and it is not a collection.
    The collections have constructors.
    Not record.

    Try like this:

    create or replace
    PACKAGE BODY MyPackage AS
     FUNCTION GetPerson RETURN MyPerson
     AS
       John MyPerson;
    
     BEGIN
      john.name := 'John';
       RETURN John;
     END GetPerson;
    END MyPackage;
    

    Kind regards

    Peter

    Published by: Peter vd Zwan Sep 25, 2012 12:56

Maybe you are looking for

  • DC 7700 Convertible Minitowers (CPU Upgrade)

    I have HP DC7700 Convertible Minitowers with CPU Intel (r) Pentium (r) D CPU 3 .00GHz. I want to change my processor to another, what is (maximum) CPU Options for my motherboard?

  • After turning the PC back together it won't turn...

    I opened my laptop because the fans kept overheating... After clearing the dust I put back together and now it does not start... the power button on the laptop to become white, but the laptop will not start. I tried to do the 30 thing to take power b

  • K1 browser stop since update system a few days ago

    K1 browser stops on some websites now since the update of system a few days ago.  It worked well on those same sites, last week before the update.   ANDROID KERNEL 2.6.36.3 K1-A301-12-12-111109-US BUILD 321

  • RSAT tools with limited options

    Hi all. I want to help the technicians of our office to install the RSAT tools to use for users and computers, but I don't want that they are able to access the DNS, DHCP and other options. I can't find articles or info on how to do this. Does anyone

  • Impossible to send e-mail, Live mail error ox800CCC0e

    I can receive but not send email in Live Mail.  I get the Live Mail error 0x800CCC0e and socket 10013 error code.  My ISP is Comcast and I can send and receive to Comcast.net.  I contacted Comcast and they say that all is well in respect to my connec