Can the table name in a cursor be parameterized?

I would like to do the following in pl/sql
Procedure my_proc ( varchar2 table_name) is
CURSOR my_cursor ( table_name VARCHAR2 ) IS SELECT some_column FROM table_name ;
i.e. parameterize the table name. I know it is possible to parameterize the SELECT cause by doing the above but, as written, my example will not compile. So, I'm wondering if it is even possible to create a cursor like this.
Thanks for any help/advice,
-=beeky

I wanted to add that I have no control over the database design. The reason I want to parameterize a cursor is to allow a single procedure to do exactly the same thing to six tables. These tables contain data for different geographic regions and are supplied by an outside party. My script essentially merges these tables into our relational model.
Thanks again to all who replied,
-=beeky

Similar Messages

  • Using a Variable for Table Name  with a cursor

    Hello All
    Is it possible to use a Parameter passed to a procedure as the table name
    in a cursor selection statment. I thought the below would work but I get
    a error. Does anyone have any ideas?? The Error is listed below to.
    Here's the code I just complied
    CREATE OR REPLACE PROCEDURE Dup_Add(NEWQATABLE IN VARCHAR2) IS
    CURSOR c1 IS SELECT MUNI,PROV FROM NEWQATABLE GROUP BY MUNI, PROV;
    c1rec c1%ROWTYPE;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO c1rec;
    EXIT WHEN c1%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(c1rec.MUNI);
    END LOOP;
    CLOSE c1;
    END;
    Here is the errors
    LINE/COL ERROR
    3/8 PLS-00341: declaration of cursor 'C1' is incomplete or malformed
    3/15 PL/SQL: SQL Statement ignored
    3/38 PLS-00201: identifier 'NEWQATABLE' must be declared
    5/7 PL/SQL: Item ignored
    10/3 PL/SQL: SQL Statement ignored
    10/17 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    12/3 PL/SQL: Statement ignored
    12/24 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    LINE/COL ERROR
    Thanks
    Peter

    If you are going to have a table name or a column name as a parameter, then you have to open the cursor dynamically. The following example uses Native Dynamic SQL (NDS) to open a ref cursor dynamically. I also eliminated the group by clause, since it is intended for use with aggregate functions and you weren't using an aggregate function. Also notice that there are some other differences in terms of defining variables and fetching and so forth.
    SQL> CREATE TABLE test_table
      2  AS
      3  SELECT deptno AS muni,
      4         dname  AS prov
      5  FROM   dept
      6  /
    Table created.
    SQL> CREATE OR REPLACE PROCEDURE Dup_Add
      2    (newqatable IN VARCHAR2)
      3  IS
      4    TYPE cursor_type IS REF CURSOR;
      5    c1 cursor_type;
      6    c1muni NUMBER;
      7    c1prov VARCHAR2 (20);
      8  BEGIN
      9    OPEN c1 FOR 'SELECT muni, prov FROM ' || newqatable;
    10    LOOP
    11      FETCH c1 INTO c1muni, c1prov;
    12      EXIT WHEN c1%NOTFOUND;
    13      DBMS_OUTPUT.PUT_LINE (c1muni || ' ' || c1prov);
    14    END LOOP;
    15    CLOSE c1;
    16  END;
    17  /
    Procedure created.
    SQL> SHOW ERRORS
    No errors.
    SQL> SET SERVEROUTPUT ON
    SQL> EXECUTE dup_add ('test_table')
    10 ACCOUNTING
    20 RESEARCH
    30 SALES
    40 OPERATIONS
    PL/SQL procedure successfully completed.

  • How can I get the table name of a field..

    Hi,
    If we know the table name we can find all the fileds from it
    using desc <tablename>.
    But, I would like to find table name of a known field's name.
    Where all these fields are storing in the database.
    THanks in Advance,
    Srinivasulu.

    ALL_TAB_COLUMNS
    rgds, APC

  • How can I get the table name of my column?

    I'm using the JDK 1.3 trying to get a table name of a column from a result set. Regardless of what driver I'm using (ODBC Bridge/Oracle) I always get a null returned. Does this method work?
    If not, if I'm doing an SQL query that uses more than 1 table and each table has a return of the same column name, how do I distinguish which table the column is from. Thanks

    You can use ResultSetMetaData interface and method
    String getTableName(int column)
    This should return you the table name.
    To get ResultSetMetaData object, you can use
    ResultSetMetaData getMetaData()
    method of ResultSet interface.
    HTH

  • How can one find the table name of the Delta Que and setup table?

    Hi !
    Is there any method to find the table name of the delta que and Extraction que ?

    setup table = <extract structure>_setup
    example: setup table for MC11VA0ITM = MC11VA0ITM_SETUP
    Delta Queue is based on following 3 tables:
    ARFCSDATA
    ARFCSSTATE
    TRFCQOUT
    assign points if useful ***
    Thanks,
    Raj

  • Invalid table name when pass in the table name as variable in dynamic sql

    Hi,
    I need to create a stored procedure which will return a list of data to my java application like the following.
    first, select the table name from the first table.
    For example : SELECT T_NAME FROM MDR_SMSTABLES
    second, select the data from the table which returned by first select statement
    For example : SELECT * FROM T_NAME.
    I use dynamic sql with cursor to select the data. But it returns "java.sql.SQLException: ORA-00903: invalid table name"
    I fetch the table name to varchar2. I think this might the cause it returns me the this error. But i don't know what type should i put for the table name other then varchar2.
    val2 VARCHAR2(200);
    OPEN cv FOR
    SELECT T_NAME FROM MDR_SMSTABLES WHERE T_DATE=d_dt_sent;
    FETCH cv INTO val2;
    WHILE cv%FOUND
    LOOP
    OPEN refcur FOR
    'SELECT * FROM :t WHERE MID = :m' USING val2, msg_id;
    EXIT WHEN refcur IS NOT NULL;
    FETCH cv INTO val2;
    END LOOP;
    As my stored procedure is quite long, so i just paste some of the code here. Hope the information is enough. Can anyone please help?
    Thanks

    DECLARE
    val2 VARCHAR2 (200);
    cv sys_refcursor;
    refcur sys_refcursor;
    BEGIN
    OPEN cv FOR
    SELECT table_name
    FROM user_tables
    WHERE table_name IN ('EMP', 'DEPT');
    FETCH cv INTO val2;
    WHILE cv%FOUND
    LOOP
    OPEN refcur FOR 'SELECT * FROM '||val2;
    EXIT WHEN refcur IS NOT NULL;
    FETCH cv INTO val2;
    END LOOP;
    END;

  • To Get all the Table Names

    Hi All
    I have nearly 70 procedures in my database.
    I want to get all the distinct table names used in the 70 procedures.
    Is it possible?
    Note:
    All the table names are prefixed by schema name like DEVSRC.table_name.
    Please advice
    Thanks
    Jo

    Johney  wrote:
    Hi VT
    One doubt.
    This query will give the table names of only select stmt used in the procedure
    or
    List of table names that are with in any DML operations inside the procedure?
    Thanks
    JoIt will give all the table either used in select or in any DML..
    You can also check by creating a temp proc
    SQL> drop procedure proc_test;
    Procedure dropped.
    SQL> select name, referenced_name, dependency_type from user_dependencies
      2  where type = 'PROCEDURE' and referenced_type = 'TABLE' and name='PROC_TEST';
    no rows selected
    SQL> create or replace
      2  PROCEDURE proc_test
      3  IS
      4  v_ID    number;
      5  v_PRID  number;
      6  v_PRLID number;
      7  v_DATERECEIVED date;
      8  Cursor C1 is
      9  select * from table_c;
    10   BEGIN
    11   open c1;
    12     LOOP
    13      FETCH c1 INTO v_ID,v_PRID,v_PRLID,v_DATERECEIVED;
    14      EXIT WHEN c1%NOTFOUND;
    15      insert into table_b values(v_ID,v_PRID,v_PRLID,v_DATERECEIVED);
    16      Commit;
    17     END LOOP;
    18   CLOSE C1;
    19   END;
    20  /
    Procedure created.
    SQL> select name, referenced_name, dependency_type from user_dependencies
      2  where type = 'PROCEDURE' and referenced_type = 'TABLE' and name='PROC_TEST';
    NAME
    REFERENCED_NAME                                                  DEPE
    PROC_TEST
    TABLE_B                                                          HARD
    PROC_TEST
    TABLE_C                                                          HARD
    SQL> Regards
    Umesh

  • How to pass the table name dynamically in xml parsing

    Hi All,
    I have created one procedure for parsing xml file which is working perfectly.
    FORALL i IN t_tab.first .. t_tab.last
             INSERT INTO Test_AP VALUES t_tab(i);Now I want to put the table name dynamically+. For that I have added one query and modify above code as follow:-
    I have already declare dml_str varchar2(800) in declaration part.
    Query is as follows:-
    select table_name into tab_name from VERSION_DETAILS where SUBVERSION_NO=abc;  -- here abc is variable name which contains values.
    FORALL i IN t_tab.first .. t_tab.last
              dml_str := 'INSERT INTO ' || tab_name || ' values :vals';
              EXECUTE IMMEDIATE dml_str USING t_tab(i);But it's not working. How I will resolve this or through which way I achieved the intended results. Anyone can guide me on this matter.
    Thanks in advance for your help...

    Hi,
    But it's not working.Don't you think it would help to give the error message?
    Put the assignment before FORALL.
    FORALL only accepts one subsequent DML statement (static or dynamic SQL) :
    dml_str := 'INSERT INTO ' || tab_name || ' values :vals';
    FORALL i IN t_tab.first .. t_tab.last          
    EXECUTE IMMEDIATE dml_str USING t_tab(i);

  • How to look for the Table Name

    Hi Friends,
    Sometimes we need to download the table for the desired information if the same is not available from a particular report. How to look for the table name? Is there a report or a particular feild, where we can find the name of the particular table?
    Thanks for the assistance.
    Regards

    Hi Friend,
    If you want to see the structures then go to SE11. Sometimes it happens that you cannot find the table names but only fields. In such case, if you want to find the Table names which is not available, then go to SE90.
    Abap Dictionary > Fields > Table Fields.
    Now Enter the Field name in Right Hand Side of the screen then Execute. You will see the all tables by which that Fields are used.
    Regards,
    Jigar

  • How to get the table name and bind columns names in an INSERT statement ?

    I have an INSERT statement with input parameters (for example
    INSERT INTO my_table VALUES (:a, :a, :a)) and I want to know
    without parsing the statement which is the name of table to
    insert to and the corresponding columns.
    This is needed to generate the SELECT FOR UPDATE statement to
    refetch a BLOB before actually writing to it. The code does not
    know in advance the schema (generic code).
    Thanks in advance,
    Joseph Canedo

    Once you have prepared your statement, you can execute the
    statement with the OCI_DESCRIBE_ONLY mode before binding any
    columns. Then you can use OCIParamGet to find out about each
    column (column index is 1-based). You should get OCI_NO_DATA or
    ORA-24334 if there are no more columns in the statement. Note
    that the parameter descriptor from OCIParamGet is
    allocated/freed internally by OCI; you do not need to manage it
    explicitly. The parameter descriptor is passed to OCIAttrGet in
    order to obtain for instance the maximum size of data in the
    column OCI_ATTR_DATA_SIZE. You can also get the column name in
    this way, although I do not remember the #define off the top of
    my head. Getting the table name appears to be much more
    difficult; I have never had to do that yet. Good luck. -Ralph

  • Creating a Mat View having the same name with that of the table name

    Hi everyone,
    After dropping the mat view name "QQ.TRDLN_DIM_MV", I'm trying to re-create it by having the same name as that of the table but I got an error stating that "name is already used by an existing object". How can create a mat view to look like the object owned by schema "GQ", having a name that is the same as that of the table name, without dropping the table?
    OWNER_O OBJECT_TYPE CREATED LAST_DDL_ TIMESTAMP STATUS OBJECT_NAME
    ===
    GQ MATERIALIZED VIEW 05-NOV-08 13-DEC-08 2008-11-05:06:31:46 VALID TRDLN_DIM_MV
    GQ TABLE 05-NOV-08 15-DEC-08 2008-11-05:06:31:00 VALID TRDLN_DIM_MV
    QQ TABLE 17-AUG-07 16-MAR-09 2007-08-17:17:05:21 VALID TRDLN_DIM_MV
    SQL&gt;CREATE MATERIALIZED VIEW QQ.TRDLN_DIM_MV
    2 TABLESPACE FPLC01S
    3 NOCACHE
    4 NOLOGGING
    5 COMPRESS
    6 PARALLEL ( DEGREE 2 INSTANCES 1 )
    7 BUILD IMMEDIATE
    8 REFRESH FORCE ON DEMAND
    9 WITH PRIMARY KEY
    10 AS
    11 select /*+ NO_REWRITE */ trdln_id,
    12 trdln_skid,
    13 trdln_end_date,
    14 first_value(trdln_end_date) over (partition by trdln_id order by trdln_end_date DESC) as MaxDate
    15 from QQ.trdln_dim;
    from QQ.trdln_dim
    ERROR at line 15:
    ORA-00955: name is already used by an existing object
    I appreciate your help. Many thanks in advance!
    Regards,
    Radic

    You'd have to rename the table (using ALTER TABLE tablename RENAME TO othername; ) before you create the MV.
    You can't have both existing with the same name in the same schema.
    What you see in the GQ schema is that the "table" is the underlying table for the Materialized View.
    When you do a CREATE MATERIALIZED VIEW MY_MV AS ...
    Oracle creates two objects with the same name, one being the Materialized View MY_MV and the other being the table MY_MV which is the physical storage. {Remember that a Materialized View is a means of getting a physical representation of a View}.
    In the QQ schema what you have is either
    a. a real Table
    or
    b. an improperly dropped MV, resulting in the underlying Table still present.

  • What is the table name ?

    Hi all,
                I have to add a new column 'initial approval date" in a simple report.
       for the PO (purchase order). i want to know where i can get this type of field
      i.e 'initial approval date"  in which table.
                     If anybody knows this type of field. please tell me the table name.
    Thanks
    kunal

    Hello Ajay Kumar,
    Release process for PO will be considered as change of PO and it will be updated in CDHDR and CDPOS table, so you need to check these table entires for your report.
    Hope this helps.
    Regards
    Arif Mansuri

  • How to find out the table name

    hi,
    how to find out the table name in which the data from a particular structure in a particular screen is saved,
    please tell me the procedure to find out the table name for saving the structure data that is inputted at runtime.
    Thanks,
    chinnu

    Hi Chinnu,
    Below are the tables that are referred to find out the table names
    DD02L Table contains the SAP Tables.
    DD02T Table contains the SAP Table Texts.
    DD01L Table contains the Domains
    DD01T Table contains the Domain Texts.
    DD03L Table contains the Table Fields.
    DD03T Table contains the Table Field Texts. (Language Dependent)
    DD04L Table contains the Data Elements.
    DD04T Table contains the Data Element Texts.
    DD05s Table contains the Foreign Key Fields
    last words with L and T only. L->Database Fetch T-> Text
    And the procedure to retrive the table name is as follows
    1. Go to se11
    2. Enter table name DD03T and execute
    3. In the next screen you can find Tables, fields, test etc. there you can enter the field name in the fields 
      and execute.
    4. you can get all tables which contains the field.
    I hope this will solve your problem
    Regards,
    Chandru

  • What are the table names for CRM and APO?

    hi friends,
    what are the table names for CRM and APO?
    Regards
    suneel.

    hi Suneel,
    check in crm forum
    Re: SAP-CRM Tables
    BUT051 BP Relationship: Contact Person Relationship
    Similar to BUT050 , additionally contains Contact Person’s Address data
    BUT0BK Business Partner: Bank Data & Details
    BP Number, Bank Key, Bank Country Key, Bank Account Number
    BNKA Bank Master Data
    BUT100 BP: Roles
    ADR2 Telephone Numbers (Business Address Services)
    ADR6 SMTP Numbers (Business Address Services)
    Contains Email – Id of the BP.
    ADRC Addresses (Business Address Services)
    BP’s Complete Address Details- City, Country, Post Code, District, Street, Title No Etc
    TSAD3T Table containing the Title text against a Title No.
    COMM_PRODUCT Master Table for Product
    CRMM_BUAG Master table for Business Agreement
    CRMM_BUAG_H Header Data for Business Agreement such as Tax Category, Tax Characteristic, Form key, Business Agreement Class. Data in this table correspond to ISU CRMD_ORDERADM_H Contains the Header Information for a Business Transaction.
    Note:
    1. It doesn’t store the Business Partner
    responsible for the transaction. To
    get the Partner No, link it with
    CRM_ORDER_INDEX.
    2. This table can be used for search
    based on the Object Id(Business
    Transaction No).
    CRMD_CUSTOMER_H Additional Site Details at the Header Level of a Business Transaction
    CRMC_PROC_TYPE Master table Business Transaction Type
    CRMC_PARTNER_FCT Definition of Partner Functions
    SCPRIOT Priorities for Activities with priority text.
    CRMC_PROC_TYPE_T Text for a transaction type
    CRMC_ACT_OBJ_T Objective Number and Text for Activities
    TJ30T All the status code and text
    CRMC_PR_ASSIGN : Transaction Type and its Transaction Type Object.
    IBIB : Installed Base/Ibase
    IBIN : Installed Base Components
    COMM_PRODUCT : Products
    CRMC_T077D : customer account groups
    CRMD_ORDERADM_H (for header) CRMD_ORDERADM_I (Item data)
    CRMD_ORDERADM_H Business Transactions CRM
    CRMD_ACTIVITY_H Activity
    CRMD_OPPORT_H Opportunity
    BUTOO : Customer details
    BUT001 BP: General data II
    BUT100 BP: Roles
    BUT150 BP relationship: Attribute table (test
    different
    BUT_HIER_TREE Business Partner Group Hierarchy
    CDBC_T_PRODUCTID Mapping: Product Id
    CDBD_ORGMAN Business transaction - organizational unit -
    set
    COMC_PRODUCT General Product Settings
    COMC_R3_FIELDS Assignment of R/3 material master fields to
    CFOP
    COMM_CATEGORY Category
    COMM_CFGMAT Basic Data for Materials
    COMM_HIERARCHY Category Hierarchy
    COMP_TYPES Hierarchy Tool: Comparison Type Check
    Table
    CRMC_CPRICPROC Customer Pricing Procedures
    SMOKVBEZ15 Assignment employees to positions
    CRMMLSGUID: GUID entry (should match GUID in CRMPRLS)
    CRMM_BUT_CUSTNO : Also GUID table (GUID here should match GUID in R/3 table CRMKUNNR)
    SMOFSUBTAB : Mapping & Parameters
    SMOFDSTAT : Download Monitor (R4AM1)
    SMOFFILTAB : Filters (Should match filters in R3AC1 & R/3 Table CRMFILTAB)
    SMOFOBJECT Definition of Objects for Download
    SMOFOBJPAR Parent Objects of an Object in Table
    SMOFPARSFA Middleware Parameter
    SMOFQFIND Queue Finder Table for MW-Queue finder
    SMOFTABLES Definition of Tables for Download

  • How to get the table name of a field in a result set

    hi!
    i have a simple sql query as
    select tbl_customerRegistration.*, tbl_customerAddress.address from tbl_customerRegistration, tbl_customerAddress where tbl_customerAddress.customer_id = tbl_customerRegistration.customer_ID
    this query executes well and gets data from the database when i get ResultsetMetaData from my result set (having result of above query) i am able to get the field name as
    ResultSetMetaData rsmd = rs.getMetaData();//rs is result set
    String columnName = rsmd.getColumnName(1);
    here i get columnName = "Customer_id"
    but when i try to get the tabel name from meta data as
    String tableName = rsmd.getTableName(1); i get empty string in table name....
    i want to get the table name of the respective field here as it is very important to my logic.....
    how can i do that.....
    please help me in that regard as it is very urgent
    thanks in advance
    sajjad ahmed paracha
    you may also see the discussion on following link
    http://forum.java.sun.com/thread.jspa?threadID=610200&tstart=0

    So far as I'm aware, you can't get metadata information about the underlying tables in a query from Oracle and/or the Oracle drivers. I suspect, in fact, that the driver would have to have its own SQL parser to get this sort of information.
    I'm curious though-- how do you have application logic that depends on the name of the source table but not know in the application what table is involved? Could you do something "cheesy" like
    SELECT 'tbl_customerRegistration' AS tbl1_name,
           tbl_customerRegistration.*
    ...Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

Maybe you are looking for

  • QuickLook / Preview and PDFs with hidden layers

    Hidden layers in PDF files show up in preview, quicklook and in the generated thumbnails. Is there any known fix for this to get the content to render with only the visible layers?

  • Udev never ever works for me

    Udev is supposed to be so simple, but every time I play with it, I get edgy. Can somebody explain to me (in very very small words;)) why this is happening: dusty:~ $ ls -l /dev/misc/nvram crw-r----- 1 root kmem 10, 144 2008-12-01 19:23 /dev/misc/nvra

  • ARIS Process Hierarchy

    We have been using ARIS for process modeling. When ARIS was first installed 3 years ago the IDS consultant suggestd that we go with a 4 level process hierarchy, as follows: Level 1 Process Group (VACD) Level 2 Scenario (EPC) Level 3 Process (EPC colu

  • Receiving a FAX or allowing PC user access to idisk file

    Hello everyone, I work with someone who uses a PC and Outlook Express and I need to be able to receive her appointment schedule in some manner. I have Verizon DSL, I followed the Help instructions to set up my ibook to receive a fax and connected a c

  • How to unlock and remove comments in Adobe Reader?

    A while ago I left a comment in an adobe file and now I want to change it or remove it. The problem is that I can't do anything to the comment, because it is locked and it seems that I don't have the permission to do that. I run Win 7, 64bit. When I