Works with table as parameter name

How to fix this feature

Create or replace function f1 ( tab_name in varchar2 )
return number
as 
num_of_row number;
begin
num_of_row := 'select count(*) from' || 'tab_name'';
return num_of_row;
end;

create or replace function f1 ( tab_name in varchar2 )
return number
as
num_of_row number;
sqlstr varchar2(900);
begin
sqlstr :=  ' SELECT count(*) FROM '||  tab_name;
execute Immediate sqlstr Into num_of_row;
return num_of_row;
end;

I have it

Tags: Database

Similar Questions

  • Working with table gross typed the parameter of the procedure.

    I have a table defined as


    CREATE TABLE 'JOBS '.
    ("JOB_ID' VARCHAR2 (200 BYTE),
    'FUNCTION' RAW (16).
    NUMBER OF "MIN_SALARY."
    NUMBER OF "MAX_SALARY.
    )



    Defined as package

    create or replace package associative_array as
    type t_job_id is table of index jobs.job_id%type by pls_integer;
    type t_job_title is table of index jobs.job_title%type by pls_integer;
    type t_min_salary is table of index jobs.min_salary%type by pls_integer;
    type t_max_salary is table of index jobs.max_salary%type by pls_integer;

    procedure array_insert (p_job_id in t_job_id,
    p_job_title in t_job_title,
    p_min_salary in t_min_salary,
    p_max_salary to t_max_salary);
    end associative_array;
    /


    create or replace package body associative_array as
    procedure array_insert (p_job_id in t_job_id,
    p_job_title in t_job_title,
    p_min_salary in t_min_salary,
    p_max_salary to t_max_salary) is
    Start
    ForAll i in p_job_id.first... p_job_id. Last
    insert into jobs (job_id,
    function,
    min_salary,
    max_salary)
    values (p_job_id (i),
    p_job_title (i),
    p_min_salary (i),
    p_max_salary (i));
    end array_insert;
    end associative_array;
    /

    The client code is

    String s = "UserID = system; password = system; data source = ORCL; enlist = true; layout common = true ";

    create and open the connection object
    Con OracleConnection = new OracleConnection (constr.);
    con. Open();
    OracleCommand cmd = con. CreateCommand();
    cmd.CommandText = "associative_array.array_insert";
    cmd.CommandType = CommandType.StoredProcedure;

    create objects for each parameter setting
    OracleParameter p_job_id = new OracleParameter();
    OracleParameter p_job_title = new OracleParameter();
    OracleParameter p_min_salary = new OracleParameter();
    OracleParameter p_max_salary = new OracleParameter();

    set the type parameter for each parameter
    p_job_id. OracleDbType is OracleDbType.Varchar2.;
    p_job_title. OracleDbType = OracleDbType.Raw;
    p_min_salary. OracleDbType = OracleDbType.Decimal;
    p_max_salary. OracleDbType = OracleDbType.Decimal;

    Set the type of collection for each parameter
    p_job_id CollectionType in the Group OracleCollectionType.PLSQLAssociativeArray;
    p_job_title. CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    p_min_salary. CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    p_max_salary. CollectionType = OracleCollectionType.PLSQLAssociativeArray;

    Set the parameter values
    p_job_id. value = new string [3] {"IT_DBA", "IT_MAN", "IT_VP"};
    p_job_title. Value = new Guid [1] {Guid.NewGuid ()};
    p_min_salary. Value = new decimal [3] {8000, 12000, 18000};
    p_max_salary. Value = new decimal [3] {16000, 24000, 36000};

    set the size for each table
    p_job_id. size = 3;
    p_job_title. Size = 1;
    p_min_salary. Size = 3;
    p_max_salary. Size = 3;

    p_job_id. ParameterName = "p_job_id";
    p_min_salary. ParameterName = "p_min_salary";
    p_max_salary. ParameterName = "p_max_salary";
    p_job_title. ParameterName = "p_job_title";

    Add parameters to the collection of command objects
    cmd. Parameters.Add (p_job_id);
    cmd. Parameters.Add (p_job_title);
    cmd. Parameters.Add (p_min_salary);
    cmd. Parameters.Add (p_max_salary);

    BindByName. cmd = true;
    run the insert
    cmd ExecuteNonQuery());

    Error occurred during execution of the customer.

    Unhandled exception: System.ArgumentException: invalid parameter binding
    Parameter name: p_job_title
    at Oracle.DataAccess.Client.OracleParameter.GetBindingSize_Raw (Int32 idx)
    at Oracle.DataAccess.Client.OracleParameter.PreBind_Raw)
    to Oracle.DataAccess.Client.OracleParameter.PreBind (OracleConnection conn, IntPtr errCtx, Int32 arraySize)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery)

    But if I change jobs. P_job_title varchar2 and change function. Value and p_job_title. Therefore, any OracleDbType is fine.

    Following me is at fault-
    p_job_title. Value = new Guid [1] {Guid.NewGuid ()};

    Since you have already said-
    p_job_title. OracleDbType = OracleDbType.Raw;

    You must have 'p_job_title. Value' as 'Byte' or 'OracleBinary.

    It will be useful.

  • Working with tables on a webservice response

    I use QtSoap to receive a response from a Web service, it consists mainly of three large paintings full of articles.

    I'm confused, how to manage the responses, especially the berries.

    Feel free to improve some of my code, developer java I'm collecting pieces of code from all the corners of the web and try to get running them together

    What I got so far is to iterate over the answer and 'find' the relevant tables.

    But how to convert the element in a table? So far, my weak attempts failed to succeed.

    const QtSoapMessage& resp = m_soap.getResponse();
    QtSoapStruct &m = (QtSoapStruct &) resp.method();
    for (QtSoapStructIterator it(m); it.current(); ++it) {
        QtSoapType *item = it.data();
        if (QString::compare("Attributes", item->name().name()) == 0) {
                qDebug() << "Attributes found";
        } else if (QString::compare("Box", item->name().name()) == 0) {
                qDebug() << "Box found";
        } else if (QString::compare("Tabs", item->name().name()) == 0) {
                qDebug() << "Tabs found";
        } else if (QString::compare("Version", item->name().name()) == 0) {
                qDebug() << "Version: "+item->value().toString();
        }
    }
    

    Have not tried it myself, but I think you can convert your points of QtSoapType to QtSoapArray if they are of this type.

    QtSoapType *item = it.data();
    
    if (item != NULL && item->type() == QtSoapType::Array)
    {
        QtSoapArray* array = (QtSoapArray*)item;
        // now work with array
    }
    

    I would like to know if it works.

  • Connect you to Skype does not work with the correct user name and password

    I tried to login with my correct user name and password, but received the error: unable to connect to Skype.

    So, I reset the password and can log on the Skype website.

    Tried to connect to Skype and the same error: unable to connect to Skype.

    I use

    Mac OS X Version 10.9.5.

    Skype 5.8.0.1027.

    OK, I think I thought about it on my own. I had not used Skype for some time. I just DLed the latest version and here is my connection works fine. Hope this helps you.

  • Easy to work with tables in InDesign for better organization

    Hello. I'm on a MacBook Pro using CS6.

    I often work with catalogues and price lists. These cases were referred in me and I am their redesign.

    Right now I'm working on a catalogue which is 40 pages. Here is a picture of a sample of what it looks like over the course of...

    Reference numbers are not in order and I'm working on it. As you can see, we have a table header that would be on every page:

    "Image number Description element.

    I put in order the following, these headers are circulating throughout the document that I have delete/insert lines. (Some cells are different sizes [as you can see on the color boxes in the image below]).

    I also wonder if anyone has experience in design/creation of catalogues and if they have any input regarding what works best for them.

    Thanks for your time.

    Screen Shot 2014-07-17 at 12.29.26 PM.png

    When you say that the header are fluid, I take this means they are repeated on each page and are moving high when you make changes?

    If this is the case, you must remove all headers except the one on the first page. Select this line and under the Table, choose Convert line > letterhead. You can then choose in the configuration of the Table have the header to repeat at the top of each image, once per page or every text column. All changes to the main header will be now repeat on each page and the header will stay on top of every page, regardless of how you move your objects.

  • Works with tables/columns of the lines and the parameter names... syntax help

    I am trying to create a function that returns the distinct value and counts of a user defined schema/table/column.

    The code below defines a [stats_on_column_obj] object type and creates a single table of this type [stats_on_column_tab].

    The function is supposed to take three input variables: p_schema_name, nom_table_p, p_column_name and return an array (above).

    I can hardcode a select into (the)... but once I try to convert it into settings & immediate exec I'm stuck. The red section is where the problem is (I think).

    Oracle 10g.

    Stats_on_column_obj CREATE TYPE IS OBJECT (

    COL_VAL VARCHAR2 (500),

    NUMBER OF COL_VAL_CNT (7)

    );

    CREATE TYPE Stats_on_column_tab IS TABLE OF stats_on_column_obj;


    FUNCTION to CREATE or REPLACE get_STATS_ON_COLUMN

    (

    p_schema_name IN varchar2,

    nom_table_p IN varchar2,

    p_column_name IN varchar2

    )

    RETURN STATS_ON_COLUMN_tab

    IS

    l_STATS_ON_COLUMN_tab STATS_ON_COLUMN_tab: = STATS_ON_COLUMN_tab ();

    n INTEGER: = 0;

    str_select_tbl varchar2 (5000);

    BEGIN

    str_select_tbl: = 'SELECT'. p_column_name |' as col_val, count (*) as col_val_cnt FROM ' | p_schema_name |'. ' || nom_table_p: ' group of ' | p_column_name;

    FOR r IN (str_select_tbl)

    LOOP

    l_STATS_ON_COLUMN_tab. EXTEND;

    n: = n + 1;

    l_STATS_ON_COLUMN_tab (n): = STATS_ON_COLUMN_obj (r.col_val, r.col_val_cnt);

    END LOOP;

    RETURN l_STATS_ON_COLUMN_tab;

    END;

    /

    [Error] PLS-00103 (124:4): PLS-00103: encountered the symbol "LOOP" when expecting one of the following numbers: * & - + / at rem rest mod.. < an exponent (*) > | multiset year DAY_

    [Error] PLS-00103 (126:9): PLS-00103: encountered the symbol "=" when expected in the following way: constant exception < an ID > < a between double quote delimited identifiers > double Ref table Fedya Chariot of time timestam

    [Error] PLS-00103 (127:29): PLS-00103: encountered the symbol "

    [Error] PLS-00103 (128:4): PLS-00103: encountered the symbol "END" when waiting for one of the following numbers: begin function package pragma procedure subtype type use < an ID > < a double quote delimited identifier > form

    SELECT * FROM TABLE (get_STATS_ON_COLUMN ('SCHEMAS_X', 'TABLE_X', 'COLUMN_X'));

    Scott@ORCL > CREATE OR REPLACE
    FUNCTION get_STATS_ON_COLUMN () 2
    3 p_schema_name IN varchar2,
    4 nom_table_p IN varchar2,
    5 p_column_name IN varchar2
    6                                )
    7 STATS_ON_COLUMN_tab of RETURN
    8 EAST
    9 v_STATS_ON_COLUMN_tab STATS_ON_COLUMN_tab: = STATS_ON_COLUMN_tab ();
    10 v_n INTEGER: = 0;
    11 v_str_select_tbl VARCHAR2 (5000);
    BEGIN 12
    13 v_str_select_tbl: = ' SELECT stats_on_column_obj (' | p_column_name |) ', Count OF ' |
    14 p_schema_name | '.' || nom_table_p | "Group of" | p_column_name;
    15 v_str_select_tbl EXECUTE IMMEDIATE
    COLLECTION IN BULK 16
    17 IN v_STATS_ON_COLUMN_tab;
    18 RETURN v_STATS_ON_COLUMN_tab;
    END 19;
    20.

    The function is created.

    Scott@ORCL > select *.
    2 from table)
    (3 get_STATS_ON_COLUMN)
    4                                            'SCOTT',
    5                                            'EMP',
    6                                            'JOB'
    7                                           )
    8                       )
    9.

    COL_VAL COL_VAL_CNT
    -------------------- -----------
    CLERK                          4
    SELLER 4
    PRESIDENT 1
    MANAGER 3
    ANALYST 2

    Scott@ORCL >

    Or better change function in the pipeline.

    SY.

  • How to work with tables (or lists) in the responses of WebService?

    Good evening!

    In a BPEL process, I invoked a certain Webservice that return me a list of people. Like this:

    < response >
    < personList >
    < person > Person1 < / person >
    < person > Person2 < / person >
    < person > channels3 < / person >
    < / people >
    < / respons >

    Now I need to do something with each returned item (like to call another Web service with the parameter 'person' (so I need to call a Web service for a 3 times))

    How can I do this?

    In the Assign CopyRules element, I see only:
    response | _
    personList | _
    Nobody

    As a person is a simple element, not a list.


    Can I use one for each element? And what next?

    Thank you.

    http://download.Oracle.com/docs/CD/E12483_01/integrate.1013/b28981/manipdoc.htm#BABCHBFB
    http://clemensblog.blogspot.com/2006/03/BPEL-looping-over-arrays-Collections.html
    http://oraclebpelindepth.blogspot.com/2008/09/arrays-in-bpel_21.html

    Indeed, you need for each and loop over each item in the person in

    in the loop, you can call the other service with the input of the corresponding person-element-data data

    person [1] / name
    [2] person / name

    etc.

  • How to put a table as parameter name in the name of the cursor and the header as a variable?

    Hello

    I have the code:
    create or replace procedure transpose_table_row2column(table_source IN VARCHAR2 ,table_result IN VARCHAR2) is
    
    -- set serveroutput on;
    
    v_nazwa_kamp      varchar2(100);
    v_czas_start      date;
    v_czas_stop       date;
    err_code          varchar2(50);
    err_msg           varchar2(2000);
    
    cmd_1_drop        varchar2(50);
    cnt_1             pls_integer;
    cnt_2             pls_integer;
    cnt_3             pls_integer;
    cnt_4             pls_integer;
    v_col_name        varchar2(50);
    test              varchar2(5);
    
    -- deklaracja wyjatku dla nieistniejacej lub niedostepnej tabeli
    TableDoesNotExist     EXCEPTION;
    PRAGMA EXCEPTION_INIT(TableDoesNotExist, -942);
    
    -- nazwa pierwszej kolumny tabeli zrodlowej
    cursor first_column is
        SELECT column_name FROM USER_TAB_COLUMNS WHERE TABLE_NAME = upper(table_source) and column_id = 1;
    
    -- wartosci z pierwszej kolumny tabeli zrodlowej
    cursor first_col_data_header is
           select v_col_name from table_source;
    
    
    
    begin
    
    test := 'true';
    v_nazwa_kamp := 'transpose_table_row2column';
    v_czas_start := sysdate;
    
    
    -- sprawdzenie czy istnieje tabela zrodlowa
    BEGIN
             EXECUTE IMMEDIATE 'SELECT count(*) FROM ' || table_source INTO cnt_4;
    EXCEPTION
             WHEN TableDoesNotExist
             THEN
                 test := 'false';
                 err_code := SQLCODE;
                 err_msg := substr(SQLERRM, 1, 2000);
                 INSERT INTO log_errors (time_err, object_name, campaign_name, error_number, error_message)
                 VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
                 COMMIT;
             
             WHEN NO_DATA_FOUND
             THEN
                 test := 'false';
                 err_code := SQLCODE;
                 err_msg := substr(SQLERRM, 1, 2000);
                 INSERT INTO log_errors (time_err, object_name, campaign_name, error_number, error_message)
                 VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
                 COMMIT;
                 
             WHEN OTHERS
             THEN
                 test := 'false';
                 err_code := SQLCODE;
                 err_msg := substr(SQLERRM, 1, 2000);
                 INSERT INTO log_errors (time_err, object_name, campaign_name, error_number, error_message)
                 VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
                 COMMIT;
    END;
    
    
    
    -- jesli istnieje tabela zrodlowa to przetwarzamy
    if test = 'true' then 
    
    
    
    -- pobieram nazwe pierwszej kolumny tabeli zrodlowej
    for v_first_column in first_column
    loop
      v_col_name := v_first_column.column_name;
    end loop;
    
    
    -- sprawdzenie czy istnieje tabela docelowa, jesli tak to trzeba usunac
    select count(*) into cnt_1 from user_tables t
    where t.table_name = upper(table_result);
    
    -- jesli istnieje tabela docelowa to usuwamy
    if cnt_1 > 0 then
       cmd_1_drop := 'DROP TABLE ' || table_result;
       execute immediate cmd_1_drop;
    end if;
    
    
    
    -- pobranie liczby wierszy tabeli zrodlowej - nalezy stworzyc tyle samo kolumn w tabeli docelowej
    -- ponizej sprawdzenie czy w pierwszej kolumnie tabeli zrodlowej sa unikalne wartosci - jesli nie to nie mozna 
    -- transponowac tabeli poniewaz musi ona miec te wartosci jako naglowki nowej tabeli i musza wystepowac one tylko 1 raz
    execute immediate 'select count(' || v_col_name || ') from ' || table_source into cnt_2; 
    execute immediate 'select count(distinct ' || v_col_name || ') from ' || table_source into cnt_3; 
    
    
    -- jesli wartosci w 1 kolumnie sa unikalne to przetwarzamy dalej
    if cnt_2 = cnt_3 then
    
    
    
    -- tutaj rozpoczynamy odczytywanie tabeli zrodlowej i tworzenie nowej przetransponowanej tabeli
    
    for v_first_col_data_header in first_col_data_header
    loop
      DBMS_OUTPUT.PUT_LINE(': ' || v_first_col_data_header.v_col_name);
    end loop;
    
    
    
    
    
    
    
    
    v_czas_stop:= sysdate;
    
    insert into log_campaigns (campaign_name, time_start, time_stop, records_count, time_diff_min)
    values (v_nazwa_kamp, v_czas_start, v_czas_stop, cnt_2, round((v_czas_stop - v_czas_start) * 24 * 60, 2));
    commit;
    
    
    end if;
    end if;
    
    
    EXCEPTION
           WHEN OTHERS THEN
              err_code := SQLCODE;
              err_msg := substr(SQLERRM, 1, 2000);
    
              INSERT INTO log_errors (time_err, object_name, campaign_name, error_number, error_message)
              VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
              COMMIT;
    
    end transpose_table_row2column;
    and I don't know how to create the slider:
    cursor first_col_data_header is
           select v_col_name from table_source;
    I have error this table does not exist
    because table_name is the name of the parameter and v_col_name is variable which I initialize later in the code:
    for v_first_column in first_column
    loop
      v_col_name := v_first_column.column_name;
    end loop;
    Thanks for help

    Here is the code you are looking for:

    create or replace procedure transpose_table_row2column (table_source IN VARCHAR2, table_result IN VARCHAR2) is

    -set serveroutput on;

    v_nazwa_kamp varchar2 (100);
    date of v_czas_start;
    date of v_czas_stop;
    err_code varchar2 (50);
    err_msg varchar2 (2000);

    cmd_1_drop varchar2 (50);
    cnt_1 pls_integer;
    cnt_2 pls_integer;
    cnt_3 pls_integer;
    cnt_4 pls_integer;
    v_col_name varchar2 (50);
    test varchar2 (5);

    -deklaracja wyjatku dla nieistniejacej lub niedostepnej tabeli
    TableDoesNotExist EXCEPTION;
    PRAGMA EXCEPTION_INIT (TableDoesNotExist,-942);

    -name pierwszej kolumny tabeli zrodlowej
    l_first_column varchar2 (32767): = 'SELECT column_name FROM USER_TAB_COLUMNS WHERE TABLE_NAME = upper(:table_source) and column_id = 1';

    -z pierwszej kolumny tabeli zrodlowej wartosci
    l_first_col_data_header varchar2 (32767).
    first_col_data_header sys_refcursor;
    l_first_col_data varchar2 (32767).

    Start

    test: = "true";
    v_nazwa_kamp: = 'transpose_table_row2column ';
    v_czas_start: = sysdate;

    -sprawdzenie czy istnieje image zrodlowa
    BEGIN
    EXECUTE IMMEDIATE ' SELECT count (*) FROM "| table_source INTO cnt_4;
    EXCEPTION
    WHEN TableDoesNotExist
    THEN
    test: = "false";
    err_code: = SQLCODE;
    err_msg: = substr (SQLERRM, 1, 2000);
    INSERT INTO log_errors (campaign_name, time_err, object_name, error_message, error_number)
    VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
    COMMIT;

    WHEN NO_DATA_FOUND
    THEN
    test: = "false";
    err_code: = SQLCODE;
    err_msg: = substr (SQLERRM, 1, 2000);
    INSERT INTO log_errors (campaign_name, time_err, object_name, error_message, error_number)
    VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
    COMMIT;

    WHILE OTHERS
    THEN
    test: = "false";
    err_code: = SQLCODE;
    err_msg: = substr (SQLERRM, 1, 2000);
    INSERT INTO log_errors (campaign_name, time_err, object_name, error_message, error_number)
    VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
    COMMIT;

    END;

    -jesli istnieje image zrodlowa at przetwarzamy
    If test = "true", then

    -pobieram nazwe pierwszej kolumny tabeli zrodlowej
    run immediately l_first_column in v_col_name using table_source;

    -sprawdzenie czy istnieje image docelowa, tak jesli to trzeba usunac
    Select count (*) in the user_tables cnt_1 t
    where t.table_name = upper (table_result);

    -jesli istnieje image docelowa at usuwamy
    If cnt_1 > 0 then
    cmd_1_drop: = 'DROP TABLE ' | table_result;
    immediately run cmd_1_drop;
    end if;

    -pobranie liczby wierszy tabeli zrodlowej - nalezy stworzyc tyle samo kolumn tabeli w docelowej
    -czy sprawdzenie ponizej w pierwszej kolumnie zrodlowej his unikalne wartosci tabeli - jesli nie to nie mozna
    -transponowac tabeli poniewaz musi ona IMCs you wartosci tabeli nowej naglowki jako I musza wystepowac a tylko 1 raz
    run immediately "select count (' |)" v_col_name | ') de ' || table_source in cnt_2;
    run immediately "select count (distinct ' |)" v_col_name | ') de ' || table_source in cnt_3;

    -jesli wartosci w 1 kolumnie his unikalne to przetwarzamy dalej
    If cnt_2 = cnt_3 then

    -tutaj rozpoczynamy tabeli zrodlowej odczytywanie I create nowej przetransponowanej tabeli
    l_first_col_data_header: = 'choose ' | v_col_name | 'from ' | table_source;
    Open the first_col_data_header for l_first_col_data_header;
    loop
    extract the first_col_data_header in l_first_col_data;
    When the output first_col_data_header % notfound;
    DBMS_OUTPUT. Put_line (': ' | l_first_col_data);
    end loop;

    v_czas_stop: = sysdate;

    insert into log_campaigns (campaign_name time_start time_stop, records_count, time_diff_min)
    values (v_nazwa_kamp, v_czas_start, v_czas_stop, cnt_2, round ((v_czas_stop-v_czas_start) * 24 * 60, 2));
    commit;

    end if;
    end if;

    EXCEPTION
    WHILE OTHERS THEN
    err_code: = SQLCODE;
    err_msg: = substr (SQLERRM, 1, 2000);

    INSERT INTO log_errors (campaign_name, time_err, object_name, error_message, error_number)

    VALUES (sysdate, 'transpose_table_row2column', v_nazwa_kamp, err_code, err_msg);
    COMMIT;

    end transpose_table_row2column;

  • working with table

    Hello?!

    I have a table, example: (1, 2, 3, 4)
    and I want to change the position of the '1' with '4', how can I?
    and remove the "1"?

    Thank you
    Mello

    Thank you... but I did a crazy thing... but works...; x
    I created two functions crazy xD

  • Wander, call from java to sql pl with table out parameter procedure

    Hello
    Please help me? It is urgent for me...
    My Oracle's Code is like this,

    CREATE TABLE TEST_TABLE ( DATE1 DATE, VALUE_EXAMPLE VARCHAR2(20 BYTE), VALUE2_EXAMPLE VARCHAR2(20 BYTE), VALUE3_EXAMPLE NUMBER ); CREATE OR REPLACE TYPE TONERECORDTEST AS OBJECT ( DATE1 DATE, VALUE_EXAMPLE VARCHAR2(20), VALUE2_EXAMPLE VARCHAR2(20), VALUE3_EXAMPLE NUMBER ); CREATE OR REPLACE TYPE TTESTTABLE IS TABLE OF TONERECORDTEST; CREATE OR REPLACE PACKAGE test_collection_procedures AS PROCEDURE testCallProcedureFromJava(start_time IN DATE, end_time IN DATE, table_data OUT TTesttable); END test_collection_procedures; / CREATE OR REPLACE PACKAGE BODY test_collection_procedures AS PROCEDURE testCallProcedureFromJava(start_time IN DATE, end_time IN DATE, table_data OUT TTesttable) IS BEGIN SELECT TONERECORDTEST(date1, value_example, value2_example, value3_example) BULK COLLECT INTO table_data FROM TEST_TABLE WHERE DATE1>=start_time AND DATE1<=end_time; END testCallProcedureFromJava; END test_collection_procedures;

    And it's like my Java Code

    import java.sql.Connection; import java.sql.DriverManager; import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.OracleTypes; import oracle.sql.ARRAY; import oracle.sql.ArrayDescriptor; import oracle.sql.STRUCT; import oracle.sql.StructDescriptor; public class testPLCollectionType { public static void main(java.lang.String[] args) { try{ //Load the driver Class.forName ("oracle.jdbc.driver.OracleDriver"); // Connect to the database Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@serverbd:1521:squema1","user", "password"); // First, declare the Object arrays that will store the data (for TONERECORDTEST OBJECT TYPE) Object [] p2recobj; Object [] p3recobj; Object [] p4recobj; // Declare the Object Arrays to hold the STRUCTS (for TTESTTABLE TYPE) Object [] p2arrobj; // Declare two descriptors, one for the ARRAY TYPE // and one for the OBJECT TYPE. StructDescriptor desc1=StructDescriptor.createDescriptor("TONERECORDTEST",conn); ArrayDescriptor desc2=ArrayDescriptor.createDescriptor("TTESTTABLE",conn); // Set up the ARRAY object. ARRAY p2arr; // Declare the callable statement. // This must be of type OracleCallableStatement. OracleCallableStatement ocs = (OracleCallableStatement)conn.prepareCall("{call test_collection_procedures.testCallProcedureFromJa va(?,?,?)}"); // Declare IN parameters. Realize that are 2 DATE TYPE!!! Maybe your could change with setDATE ocs.setString(1,"01-JAN-04"); ocs.setString(2,"10-JAN-05"); // Register OUT parameter ocs.registerOutParameter(3,OracleTypes.ARRAY,"TTESTTABLE"); // Execute the procedure ocs.execute(); // Associate the returned arrays with the ARRAY objects. p2arr = ocs.getARRAY(3); // Get the data back into the data arrays. //p1arrobj = (Object [])p1arr.getArray(); p2arrobj = (Object [])p2arr.getArray(); System.out.println("Number of rows="+p2arrobj.length); System.out.println("Printing results..."); for (int i=0; i<p2arrobj.length; i++){ Object [] piarrobj = ((STRUCT)p2arrobj).getAttributes();
    System.out.println();
    System.out.print("Row "+i);
    for (int j=0; j<4; j++){
    System.out.print("|"+piarrobj[j]);
    }
    }

    }catch (Exception ex){
    System.out.println("Exception-->"+ex.getMessage());
    }
    }

    }
    Actually when i running the java program it is showing error
    Exception-->ORA-06550: line 1, column 58:
    PLS-00103: Encountered the symbol "VA" when expecting one of the following:

    := . ( @ % ;
    The symbol ":=" was substituted for "VA" to continue.
      I am not getting the error .Please help me out Dhabas Edited by: Dhabas on Jan 12, 2009 3:49 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
    // Declare the callable statement.
    // This must be of type OracleCallableStatement.
    ..."{call test_collection_procedures.testCallProcedureFromJa va(?,?,?)}");
    

    Looks like divorced Ja's.

  • CTRL-click does not work with camelCase and PascalCase names

    I added a small example to reproduce the problem:

    create or replace view foobar as
    select 1 as id 
    from dual;
    
    -- Ctrl-click does not work
    select *
    from fooBar;
    
    -- Ctrl-click works as expected
    select *
    from foobar;
    
    -- Ctrl-click works as expected
    select *
    from FOOBAR;
    

    I tested on Oracle SQL Developer 4.1 ai2 (4.1.0.18.37)

    Yes, I see that bug

  • Addition of the new Image and text to an existing Page created with Tables

    Work in DW 5.5

    I try to add a new image/link and a small amount of text to an existing web page that was created with tables and centered.  I use AP div tags. One for the image and one for the text.  Everything works fine, but I can't get the new anchor points and to re - center with the rest of the page.  I'm not able to get around the "absolute positioning".  I tried different solutions of various tutorials but I can't make them work with tables.

    Added items are a Facebook button and text.

    Go to: http://www.sugarhollowfarms.NET/index.html See the problem.

    Help, please. I'm not that experienced.

    First, make a back up of the page before you implement the changes below!

    Take the bit of code below to

    and insert it directly after the opening tag div FWTableContainer and before your opening table tag (see location below):

    Then add - position: relative; -to the css of FWTableContainer (as shown below):

    {#FWTableContainer209091602}

    / * The div master to make sure that our contextual menus get properly aligned.  Be careful when you play with this one. */

    position: relative;

    margin: auto;

    Width: 800px;

    height: 600px;

    text-align: left;

    top: 20px;

    background-image: url(images/homepage_new3.jpg);

    border: medium solid #336600;

    position: relative;

    }

    Edit the css for FBlogo to as below:

    {#FBlogo}

    position: absolute;

    left: 700px;

    top: 380px;

    Width: 91px;

    z-index: 1;

    text-align: center;

    }

    Edit the css for bodytext as below:

    {.bodytext}

    do-family: Verdana, Arial, Helvetica, without serif.

    do-size: 11px;

    line-height: 13px;

    margin: 0;

    padding: 0;

    }

  • Search page based on query with Table on Layershift ADF Panel does not work correctly

    Hello

    I'm on 11.1.2.4 jdev and deployed my application on glassfish 3.1.2. I've hosted this application on Layershift externally.

    I created a search page based on query ADF with table Panel. All fields of research are working fine on weblogic Server integrated and my deployment local glassfish.

    However, on Layershift, when I enter some criteria of research in certain fields, it does not record.

    UPDATE, it seems that the problem is with the fields which are of the "String" ie. Name. Fields of data type Integer and Date seems fine.

    any ideas please?

    Thank you

    kdario, you're right, ViewCriteria does not use the correct syntax for mysql for the concatenation.

    The generated sql statement looks like this.

    SELECT * FROM (select student_id, student_name, from  student) QRSLT WHERE ( ( (UPPER(student_name) LIKE UPPER('%' || 'Per' || '%') ) ) )
    

    as DB MySql does not support | (double pipe sign), its sql causing failure.

    in order to support |, mysql requires to change the sql mode setting in the file my.cnf (on linux) in the

    # Set the SQL mode to strict
    sql-mode="PIPES_AS_CONCAT,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    

    After setting this parameter, its working fine now.

  • How to move from records in a procedure with Table Type as a parameter block

    Hello

    How can I move all records in a block of PL/SQL procedure with argument of Type Table or Refcursor.

    I created a procedure in the backend with a parameter of Type table. Of the form, I want to call this procedure with the argument that ALL of the records in BULK.

    Y at - it a simple method for it.


    Thanks in advance

    Rizly

    Rizly,
    I recently put in place a level of forms audit process that uses this method very - package of database, which takes an array of Records as a parameter. Forms 10 G supports this nicely. We have sought to implement this through a set of database triggers (update, insert, delete) but due to our requirements, it was not the best place to do so that we have implemented this in forms.

    Brief history on my form. The main block was based on a table, and the block has been marked NOT can, Insert and Delete. If the user wants to insert, update, or delete a record they clicked on Insert, Update, or Delete button that opens a popup form where they seized a reason Code and a Description of the transaction and then clicked a button Save.

    Here's what I did.
    Database side *.
    1 package database with a Record of PL/SQL and PL/SQL records in the Table variable declared in the Package specification.
    2. create INSERT_?, warning? and DELETE_? package procedures to manage integration, updates and deletions.
    Secondary forms *.
    1 create a table (control) Non-Base with all fields block
    2. create a button that performs a loop on the block and all values assigns to the variable of records in the Table (ToR) forms (typed off the DB package)
    3. pass the ToR to the appropriate database package procedure.

    Here is an example of the code I wrote:
    Database side *.
    Package specifications * (Note: replace with your database schema name) also note, I use PL/SQL Developer with the PLDoc plug-in so I documentation tags in my code.

    CREATE OR REPLACE PACKAGE .Transaction_Log_pkg IS
    -- Package Global Variables
    -- ------------------------
    TYPE rec_T_Log IS RECORD (
        table_name          .transaction_log.table_name%TYPE
       ,trans_type          .transaction_log.trans_type%TYPE
       ,trans_key           .transaction_log.trans_key%TYPE
       ,action              .transaction_log.action%TYPE
       ,column_name         .transaction_log.column_name%TYPE
       ,old_value           .transaction_log.old_value%TYPE
       ,new_value           .transaction_log.new_value%TYPE
       ,trans_date          .transaction_log.trans_date%TYPE
       ,user_id             .transaction_log.user_id%TYPE
       ,reason_code         .transaction_log.reason_code%TYPE
       ,comments            .transaction_log.comments%TYPE
       );
    
    TYPE tbl_T_Log IS TABLE OF rec_T_Log INDEX BY BINARY_INTEGER;
    
       -- Insert_Record --------------------------------------------------------------------------------
       /** Procedure adds "INSERT" audting records in to the CIR.TRANSACTION_LOG table
       %param      p_t_log      TABLE_OF_RECORDS
       %desc       You can pass a single record or a group of records.  Allows you to package up all of
                   the values inserted in a table and send them to the Insert_Record procedure as a
                   group rather than as individual transactions.
       -- ---------------------------------------------------------------------------------------------- */
       PROCEDURE Insert_Record (p_t_log tbl_T_Log );
    
       -- Update_Record --------------------------------------------------------------------------------
       /** Procedure adds a "UPDATE" record(s) in the CIR.TRANSACTION_LOG table
       %param      p_t_log      TABLE_OF_RECORDS
       %desc       You can pass a single record or a group of records if more than one value in a row is updated.
       -- ---------------------------------------------------------------------------------------------- */
       PROCEDURE Update_Record (p_t_log tbl_T_Log );
    
       -- Delete_Record --------------------------------------------------------------------------------
       /** Procedure adds "DELETE" records in to the CIR.TRANSACTION_LOG table
       %param      p_t_log      TABLE_OF_RECORDS
       %desc       You can pass a single record or a group of records.  Allows you to package up all of
                   the values inserted in a table and send them to the Delete_Record procedure as a
                   group rather than as individual transactions.
       -- ---------------------------------------------------------------------------------------------- */
       PROCEDURE Delete_Record (p_t_log tbl_T_Log );
    
    END Transaction_Log_pkg;
    

    Package body *.

    -- Beginning of Package Body -------------------------------------------------------------------------
    -- ---------------------------------------------------------------------------------------------------
    CREATE OR REPLACE PACKAGE BODY .Transaction_Log_pkg AS
       -- Package EXCEPTIONS
       -- ------------------
       null_table              EXCEPTION;
       null_table_name         EXCEPTION;
       null_trans_type         EXCEPTION;
       null_trans_key          EXCEPTION;
       null_action             EXCEPTION;
       null_column_name        EXCEPTION;
       null_value              EXCEPTION;
       null_user_Id            EXCEPTION;
       null_reason_code        EXCEPTION;
       null_comments           EXCEPTION;
    
       -- Package Variables
       -- -----------------
       vErrMsg                 VARCHAR2(1000);
       vSQL                    VARCHAR2(2000);
    
       -- ----------------------------------------------------------------------------------------------
       PROCEDURE Insert_Record (p_t_log tbl_T_Log ) IS
    
       BEGIN
          IF ( NVL(p_t_log.COUNT,0) = 0 ) THEN
             RAISE null_table;
          ELSE
    
             FOR i IN p_t_log.first .. p_t_log.last LOOP
                vSQL := 'INSERT INTO .transaction_log (seq_no,table_name,trans_type,trans_key,action'
                            ||',column_name,old_value,new_value,trans_date,user_id,reason_code,comments)'
                            ||' VALUES (.TRANSACTION_NO_SEQ.nextval';
    
                -- Build Insert Statement
                IF ( p_t_log(i).table_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).table_name||'''';
                ELSE
                   RAISE null_table_name;
                END IF;
                IF ( p_t_log(i).trans_type IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_type||'''';
                ELSE
                   RAISE null_trans_type;
                END IF;
                IF ( p_t_log(i).trans_key IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_key||'''';
                ELSE
                   RAISE null_trans_key;
                END IF;
                IF ( p_t_log(i).action IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).action||'''';
                ELSE
                   RAISE null_action;
                END IF;
                IF ( p_t_log(i).column_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).column_name||'''';
                ELSE
                   RAISE null_column_name;
                END IF;
                IF ( p_t_log(i).old_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).old_value||'''';
                ELSE
                   vSQL := vSQL||',NULL';
                END IF;
                IF ( p_t_log(i).new_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).new_value||'''';
                ELSE
                   RAISE null_value;
                END IF;
    
                --transaction_date
                vSQL := vSQL||',sysdate';
    
                IF ( p_t_log(i).user_id IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).user_id||'''';
                ELSE
                   RAISE null_user_id;
                END IF;
                IF ( p_t_log(i).reason_code IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).reason_code||'''';
                ELSE
                   RAISE null_reason_code;
                END IF;
                IF ( p_t_log(i).comments IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).comments||'''';
                ELSE
                   RAISE null_comments;
                END IF;
    
                vSQL := vSQL||')';
    
                dbms_output.put_line('vSQL = '||vSQL);
    
                EXECUTE IMMEDIATE vSQL;
    
                vSQL := NULL;
    
             END LOOP;
    
             -- The COMMIT is intentionally left out to force the calling
             -- application to perform the commit and complies with the
             -- basics of encapsulation.
             -- ---------------------------------------------------------
    
          END IF;
    
       EXCEPTION
          WHEN null_table THEN
             vErrMSg := 'The p_t_log Collection cannot be null!';
             RAISE_APPLICATION_ERROR(-20990,vErrMsg);
          WHEN null_table_name THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20991,vErrMsg);
          WHEN null_trans_type THEN
             vErrMSg := 'Transaction Type cannot be null!';
             RAISE_APPLICATION_ERROR(-20992,vErrMsg);
          WHEN null_trans_key THEN
             vErrMSg := 'Transaction Key cannot be null!';
             RAISE_APPLICATION_ERROR(-20993,vErrMsg);
          WHEN null_action THEN
             vErrMSg := 'Action cannot be null!';
             RAISE_APPLICATION_ERROR(-20994,vErrMsg);
          WHEN null_column_name THEN
             vErrMSg := 'Column Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20995,vErrMsg);
          WHEN null_value THEN
             vErrMSg := 'Value cannot be null!';
             RAISE_APPLICATION_ERROR(-20996,vErrMsg);
          WHEN null_user_Id THEN
             vErrMSg := 'User ID cannot be null!';
             RAISE_APPLICATION_ERROR(-20997,vErrMsg);
          WHEN null_reason_code THEN
             vErrMSg := 'Reason Code cannot be null!';
             RAISE_APPLICATION_ERROR(-20998,vErrMsg);
          WHEN null_comments THEN
             vErrMSg := 'Comments cannot be null!';
             RAISE_APPLICATION_ERROR(-20999,vErrMsg);
       END Insert_Record;
       -- ------------------------------------------------------------------------------------------------
    
       PROCEDURE Update_Record (p_t_log tbl_T_Log ) IS
    
       BEGIN
          IF ( NVL(p_t_log.COUNT,0) = 0 ) THEN
             RAISE null_table;
          ELSE
    
             FOR i IN p_t_log.first .. p_t_log.last LOOP
                vSQL := 'INSERT INTO .transaction_log (seq_no,table_name,trans_type,trans_key,action'
                            ||',column_name,old_value,new_value,trans_date,user_id,reason_code,comments)'
                            ||' VALUES (.TRANSACTION_NO_SEQ.nextval';
    
                -- Build Insert Statement
                IF ( p_t_log(i).table_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).table_name||'''';
                ELSE
                   RAISE null_table_name;
                END IF;
                IF ( p_t_log(i).trans_type IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_type||'''';
                ELSE
                   RAISE null_trans_type;
                END IF;
                IF ( p_t_log(i).trans_key IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_key||'''';
                ELSE
                   RAISE null_trans_key;
                END IF;
                IF ( p_t_log(i).action IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).action||'''';
                ELSE
                   RAISE null_action;
                END IF;
                IF ( p_t_log(i).column_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).column_name||'''';
                ELSE
                   RAISE null_column_name;
                END IF;
                IF ( p_t_log(i).old_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).old_value||'''';
                ELSE
                   vSQL := vSQL||',NULL';
                END IF;
                IF ( p_t_log(i).new_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).new_value||'''';
                ELSE
                   RAISE null_value;
                END IF;
    
                --transaction_date
                vSQL := vSQL||',sysdate';
    
                IF ( p_t_log(i).user_id IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).user_id||'''';
                ELSE
                   RAISE null_user_id;
                END IF;
                IF ( p_t_log(i).reason_code IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).reason_code||'''';
                ELSE
                   RAISE null_reason_code;
                END IF;
                IF ( p_t_log(i).comments IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).comments||'''';
                ELSE
                   RAISE null_comments;
                END IF;
    
                vSQL := vSQL||')';
    
                dbms_output.put_line('vSQL = '||vSQL);
    
                EXECUTE IMMEDIATE vSQL;
    
                vSQL := NULL;
    
             END LOOP;
    
             -- The COMMIT is intentionally left out to force the calling
             -- application to perform the commit and complies with the
             -- basics of encapsulation.
             -- ---------------------------------------------------------
    
          END IF;
    
       EXCEPTION
          WHEN null_table THEN
             vErrMSg := 'The p_t_log Collection cannot be null!';
             RAISE_APPLICATION_ERROR(-20990,vErrMsg);
          WHEN null_table_name THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20991,vErrMsg);
          WHEN null_trans_type THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20992,vErrMsg);
          WHEN null_trans_key THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20993,vErrMsg);
          WHEN null_action THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20994,vErrMsg);
          WHEN null_column_name THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20995,vErrMsg);
          WHEN null_value THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20996,vErrMsg);
          WHEN null_user_Id THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20997,vErrMsg);
          WHEN null_reason_code THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20998,vErrMsg);
          WHEN null_comments THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20999,vErrMsg);
       END Update_Record;
       -- ------------------------------------------------------------------------------------------------
    
       PROCEDURE Delete_Record (p_t_log tbl_T_Log ) IS
    
       BEGIN
          IF ( NVL(p_t_log.COUNT,0) = 0 ) THEN
             RAISE null_table;
          ELSE
    
             FOR i IN p_t_log.first .. p_t_log.last LOOP
                vSQL := 'INSERT INTO .transaction_log (seq_no,table_name,trans_type,trans_key,action'
                            ||',column_name,old_value,new_value,trans_date,user_id,reason_code,comments)'
                            ||' VALUES (.TRANSACTION_NO_SEQ.nextval';
    
                -- Build Insert Statement
                IF ( p_t_log(i).table_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).table_name||'''';
                ELSE
                   RAISE null_table_name;
                END IF;
                IF ( p_t_log(i).trans_type IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_type||'''';
                ELSE
                   RAISE null_trans_type;
                END IF;
                IF ( p_t_log(i).trans_key IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).trans_key||'''';
                ELSE
                   RAISE null_trans_key;
                END IF;
                IF ( p_t_log(i).action IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).action||'''';
                ELSE
                   RAISE null_action;
                END IF;
                IF ( p_t_log(i).column_name IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).column_name||'''';
                ELSE
                   RAISE null_column_name;
                END IF;
                IF ( p_t_log(i).old_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).old_value||'''';
                ELSE
                   vSQL := vSQL||',NULL';
                END IF;
                IF ( p_t_log(i).new_value IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).new_value||'''';
                ELSE
                   RAISE null_value;
                END IF;
    
                --transaction_date
                vSQL := vSQL||',sysdate';
    
                IF ( p_t_log(i).user_id IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).user_id||'''';
                ELSE
                   RAISE null_user_id;
                END IF;
                IF ( p_t_log(i).reason_code IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).reason_code||'''';
                ELSE
                   RAISE null_reason_code;
                END IF;
                IF ( p_t_log(i).comments IS NOT NULL ) THEN
                   vSQL := vSQL||','''||p_t_log(i).comments||'''';
                ELSE
                   RAISE null_comments;
                END IF;
    
                vSQL := vSQL||')';
    
                dbms_output.put_line('vSQL = '||vSQL);
    
                EXECUTE IMMEDIATE vSQL;
    
                vSQL := NULL;
    
             END LOOP;
    
             -- The COMMIT is intentionally left out to force the calling
             -- application to perform the commit and complies with the
             -- basics of encapsulation.
             -- ---------------------------------------------------------
    
          END IF;
    
       EXCEPTION
          WHEN null_table THEN
             vErrMSg := 'The p_t_log Collection cannot be null!';
             RAISE_APPLICATION_ERROR(-20990,vErrMsg);
          WHEN null_table_name THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20991,vErrMsg);
          WHEN null_trans_type THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20992,vErrMsg);
          WHEN null_trans_key THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20993,vErrMsg);
          WHEN null_action THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20994,vErrMsg);
          WHEN null_column_name THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20995,vErrMsg);
          WHEN null_value THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20996,vErrMsg);
          WHEN null_user_Id THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20997,vErrMsg);
          WHEN null_reason_code THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20998,vErrMsg);
          WHEN null_comments THEN
             vErrMSg := 'Table Name cannot be null!';
             RAISE_APPLICATION_ERROR(-20999,vErrMsg);
       END Delete_Record;
       -- ------------------------------------------------------------------------------------------------
    
    END Transaction_Log_pkg; -----------------------------------------------------------------------------
    -- ---------------------------------------------------------------------------------------------------
    

    Secondary forms * (all this coding was limited to the Insert, update or delete buttons.) The following example is the Insert button)

    /* When-Button-Pressed Trigger */
    DECLARE
         vBlockName     VARCHAR2(20) := 'REPORT_CATEGORIES';
         vBlockItem     VARCHAR2(61);
         vCurrItem      VARCHAR2(61);
         nRecCnt        NUMBER := 1;
    
         /* Here is where you create your Forms Variable TYPEd off the Package Table of Records (ToR) */
         /* Since it is a table of records, you could easily add multiple rows to the ToR if your form uses a multi-record block */
         p_tlog         cir.transaction_log_pkg.tbl_t_log;    
    
    BEGIN
         vCurrItem := vBlockName||'.'||Get_Block_Property(vBlockName,FIRST_ITEM);
    
         Go_Item(vCurrItem);
    
         -- 1. Endure each field if populated.
            -- 2. Check for Duplicates (Handled in W-V-I)
    
         IF ( Name_In(:system.Cursor_Item) IS NULL ) THEN
              --Fail the form at the field that is NULL
              send_alert.msg('s','All fields are required.  Please enter a unique value.');
              RAISE Form_Trigger_Failure;
         END IF;
    
         WHILE ( vCurrItem IS NOT NULL ) LOOP
              vBlockItem := :system.cursor_item;
    
              -- Loop through the block and CALL Insert_Record for each Block Item.
              /* 1 */ p_tlog(nRecCnt).table_name := vBlockName;
              /* 2 */ p_tlog(nRecCnt).trans_type := Name_In(vBlockName||'.CAT_TYPE');
              /* 3 */ p_tlog(nRecCnt).trans_key := Name_In(vBlockName||'.ID');
              /* 4 */ p_tlog(nRecCnt).action := 'INSERT';
              /* 5 */ p_tlog(nRecCnt).column_name := substr(vBlockItem,instr(vBlockItem,'.')+1,length(vBlockItem));
              /* 6 */ p_tlog(nRecCnt).old_value := NULL;
              /* 7 */ p_tlog(nRecCnt).new_value := Name_In(vBlockItem);
              /* 8 */ p_tlog(nRecCnt).trans_date := sysdate;
              /* 9 */ p_tlog(nRecCnt).user_id := :Global.userid;
              /*10 */ p_tlog(nRecCnt).reason_code := Name_In(vBlockName||'.REASON_CODE');
              /*11 */ p_tlog(nRecCnt).comments := Name_In(vBlockName||'.COMMENTS');
    
              vCurrItem := Get_Item_Property(vBlockItem,NEXTITEM);
              next_item;
              nRecCnt := nRecCnt + 1;
         END LOOP;
    
         -- 3. Insert
      -- Call TRANSACTION_LOG_PKG.Insert_Record
      -- --------------------------------------
      .transaction_log_pkg.insert_record(p_t_log => p_tlog);
    
         -- 4. Commit
         Commit;  
    
         -- 5. Clear Block
         Clear_Block(Ask_Commit);
    
         -- 6. Close Form
         Hide_Window('REPORT_CATEGORIES');
         -- 7. ReQuery RC_DISP Block
         Go_Block('REPORT_CATEGORIES_DISP');
         Clear_Block(No_Validate);
         Execute_Query;
         -- 8. Done
    END;
    

    I knew not when I started this process of forms if she was going to work because I tried to do something similar to this when I was working with Forms 6i and Oracle Enterprise Business Suite and Forms 6i supported not Ref Cursor and Table of documents very well so I didn't know at first if it would work. Search in forms documentation, I found that Forms 10 g has supported this type of functionality and this process works very well and it was surprisingly fast - at least in my usage, it is very fast. :)

    I hope this helps.
    Craig...

    If I or someone elses answer was useful, please mark accordingly

  • Is it possible to work with the conditions of a table in excel?

    I create a vi that store a lot of encoder pulse signals in a table, and I want to work with these terms as I in excel. Things like an average of a column, multiply the terms in the table, divide by constants.

    is this possible? Otherwise, what is the best way to work with this kind of data?

    Quite possible, that is the question to have tables, that you can manipulate as you need. The possibilities are endless.

Maybe you are looking for

  • Where are my poke pieces?

    through my card associated with my itunes account, AmEx I bought $4.99 on Pokemon poke parts go on my iphone 6 indicates the credit card purchase is approved, but some parts have shown upward in the pokemon see the app store. I bought successfully ma

  • Pain of the partition

    I tried to free up space on my windows 10 round-trip partition to my Mac OS X 10.10.2 partition. You used to be able to do this in start up amps or disk utility, simply by dragging the sliders, I'm sure... I couldn't make it work on Mac I looked onli

  • Defrag runs at all!

    I am running Windows 7 32 bit.  When I click on the defrag program, nothing happens.  I even did a "run as Administrator" and still nothing happens.  I opened the location of the file (see C:\Windows\system32) and try clicking on the program, but not

  • Pavilion dv2-1030ea, upgrading to N Wireless - do blacklist photo hp certain wireless mini pci-e cards?

    Hi, I just got a pavilion dv2-1030ea as a gift and I want to upgrade the card wireless to a version N (only comes with B and G compatible card), but on some sites, he pointed out that not all wireless mini pci-e cards do work with computers laptops h

  • BlackBerry Smartphones with Blackberry world App error questions (80002)

    Its been a while since I updated my blackberry torch from 7.0 to 7.1 and after the update, everything seems to work fine except the AppWorld. Whenever I try to open Appworld it says it needs a Blackberry, I would update and then the error message "Bl