Help w/ dynamic sql in form based on proc.

First, I'm not the most brilliant at this so I might be missing something basic.
I have a form based off a stored procedure. In that procedure, I have an update statement that is built dynamically from session variables. It won't work because I am putting the update statement together from variables. How can I get around this?
example:
Here is the problematic code in my procedure:
update my_schema.my_table_synonym
set
v_myfield = v_myvar
where myid = v_myid;
I am pulling the variables from session storage I created earlier in the application. It doesn't seem to like that the field is a variable... is there a way to do this? I would prefer to use this in my application dozens of times rather than copy it dozens of times with slight changes.

ok, nevermind... I figured my problem out.
All I needed was something like this:
v_sql := 'update mytable set ' || myfield || ' = ''HELLO';
EXECUTE IMMEDIATE v_sql;

Similar Messages

  • Dynamic SQL in Form Builder 6.0

    Hai,
    I would like to know how to create Dynamic SQL in Form Builder 6.0. I'am using oracle 9i database...Please help me.....

    I studied the EXEC_SQL and i wrote these syntax(below), but it gives me error...Could you help me please......:
    PROCEDURE Dynamic_sql IS
    connection_id EXEC_SQL.CONNTYPE;
    cursorID EXEC_SQL.CURSTYPE;
    sql_string VARCHAR2(1000);
    v_pc varchar2 (4);
    v_pd varchar2 (30);
    v_poc varchar2(4);
    v_pvd DATE;
    v_pid DATE;
    exec_id PLS_INTEGER;
    out_file TEXT_IO.FILE_TYPE;
    linebuf varchar2(7000);
    vchFileName VARCHAR2(100);
    Vchfolder VARCHAR2(100);
    AppID      PLS_INTEGER;
    nmbAlert          varchar2(50);
    BEGIN
    SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
    vchFileName := 'dynamic_sql_'||sysdate||'.txt';
    Vchfolder := 'D:\KONS\Damar\';
    host('mkdir '||Vchfolder,NO_SCREEN);
    out_file := text_io.fopen(vchfolder||vchFileName,'w');
    TEXT_IO.PUT_LINE (out_file,'PRODUCT CODE PRODUCT DESC PRODUCT OBJECT CODE PRODUCT VALID DATE PRODUCT INVALID DATE ');
    connection_id := EXEC_SQL.OPEN_CONNECTION('FIFDBA/F1FDBA@REPL_DAILY');
    cursorID := EXEC_SQL.OPEN_CURSOR(connection_id);
    sql_string := 'SELECT PROD_CODE, PROD_DESC, PROD_OBJT_CODE, PROD_VALID_DATE, PROD_INVALID_DATE
    FROM HOUS_PRODUCT_TYPE ';
    EXEC_SQL.PARSE(connection_id, cursorID, sql_string, exec_sql.V7);
    --EXEC_SQL.BIND_VARIABLE(connection_id, cursorID, '', input_empno);
    EXEC_SQL.DEFINE_COLUMN(connection_id, cursorID, 1,v_pc, 4);
    EXEC_SQL.DEFINE_COLUMN(connection_id, cursorID, 2, v_pd, 30);
    EXEC_SQL.DEFINE_COLUMN(connection_id, cursorID, 3, v_poc, 4);
    EXEC_SQL.DEFINE_COLUMN(connection_id, cursorID, 4, v_pvd);
    EXEC_SQL.DEFINE_COLUMN(connection_id, cursorID, 5, v_pid);
    exec_id := EXEC_SQL.EXECUTE(connection_id, cursorID);
    WHILE (EXEC_SQL.FETCH_ROWS(connection_id, cursorID) > 0 ) LOOP
    EXEC_SQL.COLUMN_VALUE(connection_id, cursorID, 1, v_pc, 4);
    EXEC_SQL.COLUMN_VALUE(connection_id, cursorID, 2, v_pd);
    EXEC_SQL.COLUMN_VALUE(connection_id, cursorID, 3, v_poc);
    EXEC_SQL.COLUMN_VALUE(connection_id, cursorID, 4, v_pvd);
    EXEC_SQL.COLUMN_VALUE(connection_id, cursorID, 5, v_pid);
    TEXT_IO.PUT_LINE(out_file,v_pc || v_pd ||v_poc||v_pvd||v_pid);
    --Forms_DDL('INSERT INTO TEMP VALUES('||''''||nRows||' '||v_state_id||''''||')');
    --COMMIT_FORM();
    END LOOP;
    EXEC_SQL.CLOSE_CURSOR(connection_id, cursorID);
    EXEC_SQL.CLOSE_CONNECTION(connection_id);
    SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
    TEXT_IO.FCLOSE(out_FILE);

  • Dynamic SQL in Forms

    I' d like to use dynamic SQL in Form, but i'm attacking a access database(ODBC OCA).
    Is there any way to do that?
    Thanks.
    null

    SEE ALL EXAMPLES
    =============
    Example 1
    ** Built-in: FORMS_DDL
    ** Example: The expression can be a string literal.
    BEGIN
    Forms_DDL('create table temp(n NUMBER)');
    IF NOT Form_Success THEN
    Message ('Table Creation Failed');
    ELSE
    Message ('Table Created');
    END IF;
    END;
    Example 2
    ** Built-in: FORMS_DDL
    ** Example: The string can be an expression or variable.
    ** Create a table with n Number columns.
    ** TEMP(COL1, COL2, ..., COLn).
    PROCEDURE Create_N_Column_Number_Table (n NUMBER) IS
    my_stmt VARCHAR2(2000);
    BEGIN
    my_stmt := 'create table tmp(COL1 NUMBER';
    FOR I in 2..N LOOP
    my_stmt := my_stmt| |',COL'| |TO_CHAR(i)| |' NUMBER';
    END LOOP;
    my_stmt := my_stmt| |')';
    ** Now, create the table...
    Forms_DDL(my_stmt);
    IF NOT Form_Success THEN
    Message ('Table Creation Failed');
    ELSE
    Message ('Table Created');
    END IF;
    END;
    Example 3:
    ** Built-in: FORMS_DDL
    ** Example: The statement parameter can be a block
    ** of dynamically created PL/SQL code.
    DECLARE
    procname VARCHAR2(30);
    BEGIN
    IF :global.flag = 'TRUE' THEN
    procname := 'Assign_New_Employer';
    ELSE
    procname := 'Update_New_Employer';
    END IF;
    Forms_DDL('Begin '| | procname | |'; End;');
    IF NOT Form_Success THEN
    Message ('Employee Maintenance Failed');
    ELSE
    Message ('Employee Maintenance Successful');
    END IF;
    END;
    Example 4:
    ** Built-in: FORMS_DDL
    ** Example: Issue the SQL statement passed in as an argument,
    ** and return a number representing the outcome of
    ** executing the SQL statement.
    ** A result of zero represents success.
    FUNCTION Do_Sql (stmt VARCHAR2, check_for_locks BOOLEAN := TRUE)
    RETURN NUMBER
    IS
    SQL_SUCCESS CONSTANT NUMBER := 0;
    BEGIN
    IF stmt IS NULL THEN
    Message ('DO_SQL: Passed a null statement.');
    RETURN SQL_SUCCESS;
    END IF;
    IF Check_For_Locks AND :System.Form_Status = 'CHANGED' THEN
    Message ('DO_SQL: Form has outstanding locks pending.');
    RETURN SQL_SUCCESS;
    END IF;
    Forms_DDL(stmt);
    IF Form_Success THEN
    RETURN SQL_SUCCESS;
    ELSE
    RETURN Dbms_Error_Code;
    END IF;
    END;

  • Need help on Dynamic SQL Cursor in Forms

    Hi All,
    I am trying to execute Dynamic SQL Cursor in forms using EXEC_SQL built in.
    I have a cursor for example:
    'select * from supplier where supplier = '||p_supplier||' and processing_order = '||p_order
    My code is
    cur_num := Exec_SQL.Open_cursor;
    sql_order := 'select * from supplier where supplier = '||p_supplier||' and processing_order = '||p_order;
    EXEC_SQL.PARSE(cursor_number, sql_order);
      EXEC_SQL.DEFINE_COLUMN(cur_num ,1,ln_Supp_Id);
      EXEC_SQL.DEFINE_COLUMN(cur_num ,2,ls_Suppl_Name,30);
    EXEC_SQL.DEFINE_COLUMN(cur_num ,24,ls_exchange,20);
      sql_count := EXEC_SQL.EXECUTE(cur_num );
      While EXEC_SQL.FETCH_ROWS(cur_num ) > 0 Loop
            EXEC_SQL.COLUMN_VALUE(cur_num ,1,ln_Supp_Id);
            EXEC_SQL.COLUMN_VALUE(cur_num ,2,ls_Suppl_Name);
            EXEC_SQL.COLUMN_VALUE(cur_num ,24,ls_exchange);
    End Loop;
    EXEC_SQL.CLOSE_CURSOR(cur_num );
    In this case I have to write 24 Define Columns and 24 Column value. Is there any way to assign them to %rowtype at one time as I need all coulmn of the table.
    I had similar case on multiple tables.
    Please help me
    Thanks,
    Maddy

    I need this dynamic sql because p_supplier and p_order values changes at run time
    I do not understand. Is this a simplified sample or the real thing? You do know that you can pass variables to cursors:
    cursor test is
    select * from supplier where supplier = p_supplier and processing_order = p_order;
    or does e.g. p_supplier hold other parts of the query?
    cheers

  • Using database link  with a dynamic SQL in Forms 5

    I have a Form 5 application where a database link is specified in a client version of dynamic SQL. The function that the application is designed to perform is to access data in a table in a remote database and use it to populate another table in a local database with the same structure as the source table. Dynamic SQL is used because the name of the table can only be resolved during run time.
    The problem is that it gives error with code 'ORA-03113' and text 'End-of-file on communication channel' when you try to run it.
    Is it not possible to use a database link with a dynamic SQL? What can I do to overcome the problem ?

    Try to create a local view based ao the remote table and use the view.

  • Using Native Dynamic SQL in Forms

    Can Native Dynamic SQL be used in Forms 5.0 or Forms 6.0? (Database 8.1.6.0.0)
    I have tried the following code (examples below) from the PL/SQL User's Guide and Reference Release 8.1.6 and the Metalinks Note: 62592.1 and the trigger/procedure (in Forms) will not compile. I appreciate any help given.
    Example1:
    (I have a table named temp_jane with a column named companies and a value 'Hello'. When compiling, I receive the error: 'Error 103 at line 8, column 11 Encountered the symbol ''IMMEDIATE" when expecting one of the following :=.(@%; ')
    declare
    str varchar2( 200 );
    val varchar2( 20 );
    ret temp_jane%rowtype;
    begin
    str := 'select company from temp_jane where company = :b1';
    val := 'Hello';
    execute immediate str into ret using val;
    message('Value fetched from table: '| |ret.company);
    end;
    Example2:
    (Here is the real issue, I don't know what the select statement, so I need to be able to assign a variable. When compiling, I receive the error: 'Error 103 at line 28, column 21 Encountered the symbol "VSQLSTATEMENT" when expecting one of the following: select ').
    declare
    type ItemsControlCurTyp is ref cursor;
    ItemsCur ItemsControlCurTyp;
    ItemsRec Items%rowtype;
    vSQLStatement varchar2( 5000 );
    vExecuteSQL varchar2( 5000 );
    vNumRows integer;
    vValue varchar2( 2000 );
    vFirstOne varchar2( 1 ) := 'Y';
    vRetval varchar2( 2000 );
    begin
    -- Display the column prompts with the right text.
    set_item_property( 'ITEMS_AVAILABLE.NDB_VALUE', PROMPT_TEXT, :ITEMS_CONTROL.AVAILABLE_LABEL );
    set_item_property( 'ITEMS_CHOSEN.NDB_VALUE', PROMPT_TEXT, :ITEMS_CONTROL.CHOSEN_LABEL );
    -- Save the original version of CHOSEN_STRING in case the user reverts or cancels.
    :ITEMS_CONTROL.CHOSEN_STRING_ORIG := :ITEMS_CONTROL.CHOSEN_STRING;
    vSQLStatement := :ITEMS_CONTROL.SELECT_STATEMENT;
    vExecuteSQL := vSQLStatement;
    -- Open the cursor
    open ItemsCur for vSQLStatement;

    Hi JTaylor
    You cannot use NDS in Client side (Developer). You have to use DBMS_SQL only.
    Regards
    A K Srinivasan
    Oracle.

  • Using Dynamic SQL in Forms

    Does anyone know anything about Dynamic SQL not being available in Forms v. 6.0.8.11.3? I trying to use Dynamic SQL for the first time and am having some difficulty. When I try to put my SQL in a function and run it straight into the database through SQLPlus, it works fine, but when trying to compile the code in Forms Builder (in a library), I get compiler errors. Any help would be appreciated...
    Thanks!
    Vanessa

    When I tried to compile the following code in Forms, the compiler error I got was Encountered the symbol "STMT_STR" when expecting one of the following: select. However, when I run it in SQLPlus, it creates the function without any errors.
    FUNCTION my_func
    return number
    is
    TYPE DiaryCurTyp IS REF CURSOR;
    cur DiaryCurTyp;
    stmt_str VARCHAR2(200);
    dmonth NUMBER;
    dday NUMBER;
    BEGIN
    stmt_str := 'SELECT dmonth, dday FROM p2_diary
    WHERE dmonth = :1';
    OPEN cur FOR stmt_str USING '12';
    LOOP
    FETCH cur INTO dmonth, dday;
    EXIT WHEN cur%NOTFOUND;
    -- <process data>
    END LOOP;
    CLOSE cur;
    END;

  • Dynamic sql and block based on a stored procedure

    Hi!
    I'm triying to generate a block based on a stored procedure. I want the stored procedure to execute a dynamic sql, but I'm having getting the error "PLS-00455 cursor 'AULOCASLATE' cannot be used in dynamic SQL OPEN statement".
    I have the following code:
    CREATE OR REPLACE package pkg_f0015 is
    type rClieInstSlate is record
    (clie_id CMS_CLIENTS.ID%type
    ,client_nm varchar2(1000)
    ,cs_no CMS_CLIENTS.CS_NO%type
    ,dob CMS_CLIENT_NAMES.BIRTH_DT%type);
    type tClieInstSlate is table of rClieInstSlate;
    type uClieInstSlate is ref cursor return rClieInstSlate;
    procedure prLocationSlateQry(
    auLocaSlate in out uClieInstSlate,                anCsNo in CMS_CLIENTS.CS_NO%type,
    avClieNm in varchar2,
    avSearchType in varchar2,
    avLotyCd in CMS_LOCATION_TYPES.CD%type);
    end pkg_f0015;
    CREATE OR REPLACE PACKAGE BODY pkg_cms_f0015 is
    procedure PRLocationSlateQry( auLocaSlate in out uClieInstSlate,
    anCsNo in CMS_CLIENTS.CS_NO%type,
    avClieNm in varchar2,
    avSearchType in varchar2,
    avLotyCd in CMS_LOCATION_TYPES.CD%type) IS
    vSelect varchar2(5000);
    vAddCond varchar2(1000);
    vSupLevel varchar2(50);
    begin
    vSelect := 'select clie.ID,'||
    ' CLIENT_NAME,'||
    ' clie.CS_NO,'||
    ' clna.BIRTH_DT dob'
    ' from CMS_CLIENT_NAMES clna,'||
    'CMS_CLIENTS clie'||
    ' where clna.CLIE_ID = clie.ID';
    if avSearchType= 'C' then
    vAddCond := ' and clie.CS_NO = nvl('||anCsNo||',clie.CS_NO)';
    vSelect := vSelect || vAddCond;
    open auLocaSlate for vSelect;
    end if;
    end PRLocationSlateQry;
    end;
    I wonder if what I want is possible

    OK,
    Now it works. Previously we had the parameter p_guid declared as RAW, which obviously is not any good. :)
    Radovan
    Edited by: biciste on Apr 28, 2009 4:57 PM

  • Help: FRM-40505 for a FORM based on stored procedures

    Hi,
    I am working on a FORM based on stored procedures. When it performs a query, it actually returns record, but still comes with the message FRM-40505: ORACLE error: unable to perform query. Any recommendations on the possible coding area to check?
    Thank you in advance.
    Jimmy

    Jimmy,
    To base a block on a stored procedure is not a simple task because it depends on the .....
    .... stored procedure !
    If you do not provide much information (like the famous stored procedure), we could not do anything for you.
    As much information you provide, as much chance we have to understand the problem.
    Francois

  • Help with dynamic SQL

    Hello,
    I have the following function that works ok:
    CREATE OR REPLACE FUNCTION Get_Partition_Name (sTable VARCHAR2, iImportIndex INTEGER)
    RETURN VARCHAR2 IS
    cursor c is select A.partition_name from (select table_name, partition_name,
    extractvalue (
    dbms_xmlgen.
    getxmltype (
    'select high_value from all_tab_partitions where table_name='''
    || table_name
    || ''' and table_owner = '''
    || table_owner
    || ''' and partition_name = '''
    || partition_name
    || ''''),
    '//text()') import_value from all_tab_partitions) A where table_name = sTable and A.import_value = iImportIndex;
    sPartitionName VARCHAR(20);
    err_num NUMBER;
    BEGIN
    open c;
    fetch c into sPartitionName;
    IF c%ISOPEN THEN
    CLOSE c;
    END IF;
    RETURN sPartitionName;
    EXCEPTION
    WHEN OTHERS THEN
    err_num := SQLCODE;
    --save error in log table
    LOG.SAVELINE(SQLCODE, SQLERRM);
    END Get_Partition_Name;
    I am trying to replace the cursor statement with dynamic SQL, something like (see below) but it doesn't work any more; I think I am missing some quotes.
    CREATE OR REPLACE FUNCTION Get_Partition_Name (sTable VARCHAR2, iImportIndex INTEGER)
    RETURN VARCHAR2 IS
    TYPE t1 IS REF CURSOR;
    c t1;
    sSql VARCHAR2(500);
    sPartitionName VARCHAR(20);
    err_num NUMBER;
    BEGIN
    sSql := 'select A.partition_name from (select table_name, partition_name,
    extractvalue (
    dbms_xmlgen.
    getxmltype (
    ''select high_value from all_tab_partitions where table_name=''''
    || table_name
    || '''' and table_owner = ''''
    || table_owner
    || '''' and partition_name = ''''
    || partition_name
    || ''''''),
    ''//text()'') import_value from all_tab_partitions) A where table_name = :a and A.import_value = :b';
    OPEN c FOR sSql USING sTable, iImportIndex;
    fetch c into sPartitionName;
    IF c%ISOPEN THEN
    CLOSE c;
    END IF;
    RETURN sPartitionName;
    EXCEPTION
    WHEN OTHERS THEN
    err_num := SQLCODE;
    --save error in log table
    LOG.SAVELINE(SQLCODE, SQLERRM);
    END Get_Partition_Name;
    Please advise,
    Regards,
    M.R.

    Assuming the requirement is to find the partition in the supplied table with the supplied high value and the issue is that dba/all_tab_partitions.high_value is a long, one alternative along the same lines as you've done already is as follows. (I've just used a cursor rather than a function for simplicity of demo).
    SQL> var r refcursor
    SQL> set autoprint on
    SQL> declare
      2   ctx dbms_xmlgen.ctxhandle;
      3   v_table_name VARCHAR2(40) := 'LOGMNR_USER$';
      4   v_value      NUMBER       := 100;
      5  begin
      6   ctx := DBMS_XMLGEN.NEWCONTEXT
      7          ('select table_name
      8            ,      partition_name
      9            ,      high_value  hi_val
    10            from   dba_tab_partitions
    11            where  table_name     = :table_name');
    12   dbms_xmlgen.setbindvalue(ctx,'TABLE_NAME',v_table_name);
    13   open:r for
    14   with x as
    15   (select xmltype(dbms_xmlgen.getxml(ctx)) myxml
    16    from   dual)
    17   select extractvalue(x.object_value,'/ROW/TABLE_NAME') table_name
    18   ,      extractvalue(x.object_value,'/ROW/PARTITION_NAME') partition_name
    19   ,      extractvalue(x.object_value,'/ROW/HI_VAL') hi_val
    20   from   x
    21   ,      TABLE(XMLSEQUENCE(EXTRACT(x.myxml,'/ROWSET/ROW'))) x
    22   where  extractvalue(x.object_value,'/ROW/HI_VAL') = v_value;
    23  end;
    24  /
    PL/SQL procedure successfully completed.
    TABLE_NAME
    PARTITION_NAME
    HI_VAL
    LOGMNR_USER$
    P_LESSTHAN100
    100
    SQL> I'm sure there are other ways as well. Especially with XML functionality, there's normally many ways to skin a cat.

  • Dynamic SQL an Form values in formatted Search

    Hi all,
    Can I create Dynamically the where clause of a query (for a Formatted Search) finding that into a UDF of another table, and then store all in a Varchar(300) variable and use that variable as parameter of an EXEC?
    Sorry for my bad explanation, it takes less time attach the query ...
    so here it is:
    declare  @pol as varchar(8)
    set @pol = $[ORDR.U_PolProj]
    declare @internal_q NVARCHAR(300)
    select  @internal_q = T0.U_CondPol
    from [@PRG_CEN_POL_PROJ] T0
    where Code = @pol
    declare  @itcode as varchar(100)
    set @itcode = $[RDR1.ItemCode]
    declare @sql NVARCHAR(300)
    select @sql = 'select  result =  count(ItemCode)
    from OITM T0
    where T0.ItemCode = ''' + @itcode +
    ''' and ' + @internal_q
    exec(@sql)
    Could someone tell me what's wrong with this formatted search?

    resolved!!! It works

  • Selection screen - search help with dynamic sql query

    hey ,
    is it possible to change the search help of the selection field ?
    when i create the range table i put a data element :
    create a range table that consists of this new data element
      LT_RANGE_TABLE = WD_THIS->M_HANDLER->CREATE_RANGE_TABLE( I_TYPENAME = 'S_CARR_ID' ).
    can i control the search help via the the data element or by other methods ?
    i want that when the user press F4 the values that will show is the result of a sql query that i will write .
    is it possible ?
    thanks
    ASA.

    Hi,
    yes it is possible...
    This is my test code for say personal number select options...
    lt_range_table = wd_this->m_handler->create_range_table(
      i_typename = 'PERSNO' ).
    add a new field to the selection
      wd_this->m_handler->add_selection_field(
      i_id = 'PERSNO'
    I_VALUE_HELP_TYPE = if_wd_value_help_handler=>CO_PREFIX_SEARCHHELP
    I_VALUE_HELP_ID = 'ZHELP_WDA_PERNR'   "this is the custom search help we need to create
    I_NO_INTERVALS = abap_true
      it_result = lt_range_table
      i_read_only = read_only ).
    do the following:
    1) copy the std function module: F4IF_SHLP_EXIT....to ZF4IF_SHLP_EXIT_pernr (in my case i am testing for pernr so my fm
    name is like that....obviously it can be anything you want...under the recommended naming convention)
    2) look for "STEP SELECT"
    STEP SELECT    (Select values)
    3)write the code as follows:
    "NOTE: this is my testing code...but you can build your logic on it....
    IF CALLCONTROL-STEP = 'SELECT'.
    types: begin of zpri_listing,
    pernr type PERSNO,
    end of zfund_listing.
    DATA: lo_syuname TYPE sy-uname.
    data itab type standard table of Zpri_LISTING.
    data wa type zpri_listing.
        DATA : t_fields LIKE TABLE OF shlp_tab-fielddescr.
        DATA : w_fields LIKE LINE OF shlp_tab-fielddescr.
        DATA : l_fname TYPE dfies-lfieldname.
        IF lo_syuname <> sy-uname.  "means we were here before and ITAB is filled...fm retains its data values...unless refresh happens
    "this if condition make sure that we do not do this select all the time as long as the same user is logged in...
    "a user can press f4 many times...you might want to enhance this logic a little bit more for performance
          lo_syuname = sy-uname.
    ))))))))))))))HERE DO YOUR SELECT(((((((((((((((((((((
    select pernr from "sometable" into table itab.
        ENDIF.
        LOOP AT shlp_tab.
          LOOP AT shlp_tab-fielddescr INTO w_fields.
            l_fname = w_fields-fieldname.
            CALL FUNCTION 'F4UT_PARAMETER_RESULTS_PUT'
              EXPORTING
                parameter               = w_fields-fieldname
              OFF_SOURCE              = 0
              LEN_SOURCE              = 0
              VALUE                   =
               fieldname               = l_fname
              TABLES
                shlp_tab                = shlp_tab
                record_tab              = record_tab
                source_tab              =  itab
              CHANGING
                shlp                    = shlp
                callcontrol             = callcontrol
             EXCEPTIONS
               parameter_unknown       = 1
               OTHERS                  = 2
          ENDLOOP.
        ENDLOOP.
        IF sy-subrc EQ 0.
          callcontrol-step = 'DISP'.
        ELSE.
          callcontrol-step = 'EXIT'.
        ENDIF.
        EXIT. "Don't process STEP DISP additionally in this call.
      ENDIF.
    4) save and activate this function module...
    5) go to se11 and create "Elementary srch hlp"....
    6) fill out all the necessary fields...i am assuming that you already know how to create the search helps...
    look for this field: "Search help exit" and put your function name which you created in the above steps...
    in this example i have: ZF4IF_SHLP_EXIT_pernr....
    7) create and activate the search help....
    hope this helps...i just tested this and it is working for me....
    Thanks..
    AS...

  • How to execute dynamic sql in forms 6i?

    Cursor_Handle     Integer     := DBMS_SQL.OPEN_CURSOR;
         Out_Put          Integer;
    BEGIN
         DBMS_SQL.PARSE(Cursor_Handle, Sql_Stmt , dbms_sql.v7);
         Out_Put := DBMS_SQL.EXECUTE(Cursor_Handle);
         DBMS_SQL.CLOSE_CURSOR(Cursor_Handle);
    return true;
    END;
    this is the procedure i have used. it works fine in server side but not in client side. pls help me to solve this problem.
    Advance tanx

    The reason your process won't compile is that you are using a package variable, dbms_sql.v7. (Why aren't you using dbms_sql.native?) If you change that variable to a value of 1 it will probably work.
    However, Francois is correct -- In Forms, you should be using the Exec_SQL package. It is built for Forms; Oracle does not support using DBMS_SQL from Forms. In fact, if you use Forms Builder 10g connected to Oracle 9i and try to compile, the compiler fails with internal errors. They say it works again if you connect to Oracle 10.
    Exec_SQL is identical to DBMS_SQL, except for exception handling. You have to make an additional call to catch the error if an exception occurs: Exec_SQL.Last_Error_Code

  • Help with dynamic sql across multiple tables

    I have more than one similar table that stores data from different dynamically generated relations:
    Following are the scripts to create and populate tables
    CREATE TABLE RELATION_1(
        SRC            NUMBER(38, 0)               NOT NULL,
        TRG            NUMBER(38, 0)               NOT NULL,
        VALUE          NUMBER(38, 0)               NOT NULL
    CREATE TABLE RELATION_2(
        SRC            NUMBER(38, 0)               NOT NULL,
        TRG            NUMBER(38, 0)               NOT NULL,
        VALUE          NUMBER(38, 0)               NOT NULL
    CREATE TABLE RELATION_3(
        SRC            NUMBER(38, 0)               NOT NULL,
        TRG            NUMBER(38, 0)               NOT NULL,
        VALUE          NUMBER(38, 0)               NOT NULL
    insert into RELATION_1 values(1, 1, 13);
    insert into RELATION_1 values(1, 2, 4);
    insert into RELATION_1 values(1, 3, 6);
    insert into RELATION_1 values(2, 1, 3);
    insert into RELATION_1 values(2, 3, 7);
    insert into RELATION_1 values(3, 1, 5);
    insert into RELATION_2 values(1, 2, 1);
    insert into RELATION_2 values(4, 1, 1);
    insert into RELATION_2 values(5, 1, 1);
    insert into RELATION_3 values(1, 1, 11);
    insert into RELATION_3 values(2, 1, 4);
    insert into RELATION_3 values(3, 1, 5);
    insert into RELATION_3 values(1, 2, 6);
    insert into RELATION_3 values(2, 2, 3);
    insert into RELATION_3 values(3, 2, 5);
    insert into RELATION_3 values(1, 3, 2);
    insert into RELATION_3 values(2, 3, 3);
    insert into RELATION_3 values(3, 3, 5);Now, I want to write a SQL that for a set of SRCs (lets say for 1,2,3) give me the top n (let's say top 10) TRGs and the SUM of all the VALUE across all the tables except for RELATION_2, i.e. RELATION_1 and RELATION 3, order by this SUM and exclude those TRGs that have entry for SRC-TRG combination in RELATION_2 table.
    Thanks
    Edited by: Vasif Shaikh on Sep 21, 2010 2:34 PM

    I didn't completely understand your requirement, but couldn't you UNION all the tables together? Then you could do your Top-n and sorting etc as if you were working with one table.

  • HELP IN DYNAMIC SQL....PLEASE HELP

    upd_str := upd_str||'total_prv_mth_amr = nvl(total_prv_mth_amr,0) '||'+ nvl('||p_upd_prev_mth||',0),';
    EXECUTE IMMEDIATE upd_str;
    IN THE ABOVE IAM GETTING VALUE ERROR BECAUSE total_prv_mth_amr IS A DATABASE NUMBER COLUMN WHERE AS P_upd_prev_mth IS A VARCHAR2 WHOSE VALUE IS GOT AT RUNTIME. i NEED TO ADD BOTH THESE TOGETHER. HOW DO I DO THAT ?? PLEASE HELP ME

    I don't think that's the problem. Oracle is quite capable of turning a varchar2 value into a number with a to_number(); it's called implicit conversion. ORA-1722: INVALID NUMBER most likely indicates that p_upd_prev_mth contains data that is not a valid numeric value e.g. letters, spaces, etc.
    This is why we should also design a databases so that numeric data is held in a NUMBER column.
    Cheers, APC

Maybe you are looking for

  • How to develop Framework Extension for join two tables

    Dear developers, My project contains more than 200 maintenance tables. Maintenance tables are very small and less than 100 lines. Maintenance tables mostly associated with a translation table. Translation tables are used for localized texts. Translat

  • Printing a Word document to pdf

    Is it possible to directly print a Word document to jpg through Adobe, or do I first have to print it to pdf and then save it as a jpg?

  • How to control junk emails in Outlook 2011

    Hi Guys, I have installed MS office 365 on my new Mac Book Pro. I receive lots of junk emails in my outook email. Before I used windows and had Norton Internert Security on my Laptop, was no problem at all. Since I used Mac, I cannot control junk ema

  • Audition 3.0.1 Random Gaps of Silence

    Hello, I am having a major problem with Adobe Audition 3.0.1. When recording between 9 and 14 tracks at a time a few of the tracks, not all, will randomly have gaps of silence. Some of the gaps are of different lengths. I have attached a screenshot o

  • Cannot use Toshiba Utilities after removing some dll files

    After the use of malwarebyte's anti malware, i have somme dll lost (for ex : mscoreei.dll) and I can not use correctly toshiba utilities. I have trired to reinstall some utilities I have found on the website, but it does not work better. I have reins