Invalid Identifier for a bind variable

I am running a sql query and am using bind variables for dates. Running the querry and after putting values for the bind variable I get a message invalid identifier. Could any one help me and tell me what I am doing wrong.
1 SELECT D.NAME_LAST||', '||D.NAME_FIRST DEBTOR,
2 F.CDCS_NBR,
3 F.CDCS_SEQ,
4 F.POSTING_DATE,
5 F.PAYMENT_AMOUNT,
6 ( GREATEST ( NVL ( F.ACCRUED_INT_CAP, 0 ), NVL ( F.ACCRUED_INTEREST, 0 ) )
7 + NVL ( F.ACCRUED_FINE_INTEREST, 0 ) )
8 ACCRUED_INT_CAP,
9 DECODE(CLASS,'V', RUN_INTEREST,'R',(RUN_FINE_INTEREST + RUN_INT_CAP)) RUN_INTEREST
10 FROM TA_DEBT_DEBTOR_LIAB_VW D,
11 TA_FINANCE F
12 WHERE F.POSTING_DATE BETWEEN TO_DATE(&A, 'DD-MON-YYYY') AND
13 TO_DATE(&B, 'DD-MON-YYYY')
14 AND
15 F.FINANCE_CODE = 'PMNT'
16 AND F.PAYMENT_AMOUNT <
17 ( GREATEST ( NVL ( F.ACCRUED_INT_CAP, 0 ), NVL ( F.ACCRUED_INTEREST, 0 ) )
18 + NVL ( F.ACCRUED_FINE_INTEREST, 0 ) )
19 AND F.DEBTORID = D.DEBTORID
20 AND F.CDCS_NBR = D.CDCS_NBR
21 AND F.CDCS_SEQ = D.CDCS_SEQ
22* ORDER BY D.NAME_LAST, D.NAME_FIRST
SQL> /
Enter value for a: 10-JAN-2003
old 12: WHERE F.POSTING_DATE BETWEEN TO_DATE(&A, 'DD-MON-YYYY') AND
new 12: WHERE F.POSTING_DATE BETWEEN TO_DATE(10-JAN-2003, 'DD-MON-YYYY') AND
Enter value for b: 10-JUN-2006
old 13: TO_DATE(&B, 'DD-MON-YYYY')
new 13: TO_DATE(10-JUN-2006, 'DD-MON-YYYY')
TO_DATE(10-JUN-2006, 'DD-MON-YYYY')
ERROR at line 13:
ORA-00904: "JUN": invalid identifier

Replace this line...
12 WHERE F.POSTING_DATE BETWEEN TO_DATE(&A, 'DD-MON-YYYY') AND
with...
12 WHERE F.POSTING_DATE BETWEEN TO_DATE('&A', 'DD-MON-YYYY') AND

Similar Messages

  • Error with clob column: "No pl/sql translation for the blind type given for this bind variable"

    This is reports 11g
    I've got a clob column. Reports seems to recognize its type, but if I try to reference it in a format trigger, I get this error at compile time:
    "No pl/sql translation for the blind type given for this bind variable"

    Actually, Reports is in something better than Forms.
    Neither Forms nor Reports do not have "complete" SQL engine (both have only "complete" PL/SQL engine), but have their own SQL parser, which does not understand SQL commands after the database 8.0.
    But, in Reports Data Model - SQL Query Statement, we can write "modern" SQL statement (> database 8.0), because Reports sent it directly to the database, without using their own SQL parser.
    For example, in Reports Data Model - SQL Query Statement, we can write this (scalar subquery expressions, in bold):
    select empno,
           ename,
           deptno,
           (select dname from dept where deptno = emp.deptno) dname
      from emp
    order by empno;
    although scalar subquery expressions was introduced in the database 9.0.1, and in databases 8.0 and 8.1 we should write someting like this:
    select emp.empno,
           emp.ename,
           emp.deptno,
           dept.dname
      from emp,
           dept
    where dept.deptno = emp.deptno
    order by empno;
    Regards,
    Zlatko

  • How to fix different execution plan for different bind variable values?

    Please find the below query. The execution plan is fine. The problem That I am facing is in some cases for different bind variable values execution plan gets changed and degrades performance. I have used 6 tables here and all of the tables have histogram on all columns. Database version is Oracle 10g and the value of method_opt is 'For all columns size auto'
    SELECT l.LineNumber INTO :b0
    FROM Lines l ,LineVersions lv ,Statuses s
    WHERE (((((((((((l.serviceContractId=:b1 AND l.LineId<>:b2)
    AND lv.LineId=l.LineId) AND lv.StatusId=s.StatusId)
    AND s.Code IN ('EPR','ERE','EEP','ERP','PRP','PRD','AAC'))
    AND NOT (s.CODE='AAC' AND lv.activeto<TO_DATE(:b3,:b4)))
    AND lv.EquipmentDetailId=:b5) AND lv.RouteDetailId=:b6)
    AND (lv.cargoDetailId=:b7 OR lv.cargoDetailId IN
    (SELECT i_cd1.cargoDetailId
    FROM CargoDetails i_cd1 ,CargoDetails i_cd2 ,CargoCommodities i_cc1 ,
    CargoCommodities i_cc2 WHERE
    ((((((i_cd2.cargoDetailId=:b7 AND i_cd1.cargoDetailId<>:b7)
    AND i_cd1.ServiceContractId=:b1) AND i_cd1.cargoTypeId=i_cd2.cargoTypeId)
    AND i_cc1.cargoDetailId=i_cd1.cargoDetailId)
    AND i_cc2.cargoDetailId=i_cd2.cargoDetailId)
    AND i_cc1.commodityId=i_cc2.commodityId))))
    AND ((lv.customerGroupId IS NULL AND :b11=0) OR lv.customerGroupId IN
    (SELECT cgm1.customerGroupId
    FROM CustomerGroupMembers cgm1 ,CustomerGroupMembers cgm2 ,CustomerGroups cg1
    WHERE (((cgm2.customerGroupId=:b11 AND cgm1.customerNoId=cgm2.customerNoId)
    AND cg1.CustomerGroupId=cgm1.CustomerGroupId)
    AND cg1.ServiceContractId=l.ServiceContractId)))) AND lv.linetype='C')
    AND ROWNUM=1)
    After searching in several blogs I have found the below solutions. Please see it and let me know it is correct or not
    Solution 1:-Get rid of histogram that does nothing but messes up execution plan by giving below command
    exec dbms_stats.gather_table_stats(owner, tablename, method_opt => 'for all columns size 1', cascade => true);
    As 6 tables are there I need to execute above command 6 times.
    Solution 2:- Use stored outline. Not sure how to get the best execution plan.
    I am looking for answers ASAP. Thanks in advance

    As you have probably read, bind variables and histograms do not mix well.
    Histograms suggest that you have skew in your data such that different values should get different plans
    Bind variables exist so that SQL with different supplied values can be shared.
    Mix the two together and at parse time with bind variable peeking you get plans for specific values shared for all values.
    The solutions you have mentioned are the common approaches, together with a third - use literals not binds if you've got data skew (i.e. your histograms are justified) and don't want shared SQL.
    I would have thought that getting rid of some of these histograms may be the right approach if you're none of your application SQL is using literals to benefit from them.
    Can you confirm your version of Oracle.
    Further reading:
    http://jonathanlewis.wordpress.com/2009/05/06/philosophy-1/
    http://structureddata.org/2008/03/26/choosing-an-optimal-stats-gathering-strategy/
    http://richardfoote.wordpress.com/2008/01/04/dbms_stats-method_opt-default-behaviour-changed-in-10g-be-careful/

  • Null check for a bind variable in view criteria

    Hi, Greetings.
    I am using Jdeveloper 11.1.2.0.
    I have a view object, LocationsView, for locations table of the XE database.
    I want to apply a condition, ((:bind_var is null) or (:bind_var is not null and location_id = :bind_var), in this LocationsView.
    That is, I want to apply the condition only if the bind variable value is not null.
    How can I construct this condition using a declarative view criteria?
    Any help and hints on this regard is greatly appreciated.
    Regards,
    Guru K

    Hi,
    Thanks for the update and it is working perfectly fine.
    Now, how can I set the "ignore null values" option as checked if I am constructing the criteria programmatically using view criteria row and view criteria item at runtime.
    Thanks and regards,
    Guru K

  • Best Practice for setting bind variable when application loads

    I am using JDeveloper 11.1.2.3.
    When my application loads, the first unbounded page has a table populated by a named query.
    I would like to set the parameter used by the named query when the page loads, to populate the initial data that is displayed.
    What is the best practice for a solution to this issue?

    user6003393 wrote:
    I am using JDeveloper 11.1.2.3.
    When my application loads, the first unbounded page has a table populated by a named query.
    I would like to set the parameter used by the named query when the page loads, to populate the initial data that is displayed.
    What is the best practice for a solution to this issue?Hi,
    You can set the bind variable on VO by overriding prepareSession() method in Application Module check this http://docs.oracle.com/cd/E37975_01/web.111240/e16182/bcservices.htm#sthref357
    Setting bind variable on runtime http://docs.oracle.com/cd/E37975_01/web.111240/e16182/bcquerying.htm#CHDECJHD
    Zeeshan

  • Open cursor for and bind variables

    Hello all,
    how can I assign values to a bind variable before opening a cursor?
    example code:
    DECLARE
       TYPE ref_cur_t IS REF CURSOR;
       l_ref_cur   ref_cur_t;
       l_query VARCHAR2 (100)
             := 'select * from table t1 where ndx= :var_index' ;
    BEGIN
       -- assign a value to :var_index
       OPEN l_ref_cur FOR l_query;
    END;Thanks!

    Something like this ->
    scott@ORCL>
    scott@ORCL>DECLARE
      2     l_ref_cur   sys_refcursor;
      3     l_query VARCHAR2 (100) := 'select * from emp where empno = :var_index';
      4     l_empno  number(4);
      5  BEGIN
      6     l_empno := &emno;
      7     -- assign a value to :var_index
      8     OPEN l_ref_cur FOR l_query using l_empno;
      9  END;
    10  /
    Enter value for emno: 7698
    old   6:    l_empno := &emno;
    new   6:    l_empno := 7698;
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:19.78
    scott@ORCL>Regards.
    Satyaki De.

  • Warning: No indices selected for this bind variable ??

    I have a view object that is read-only and performs a JDBC connection to SQL 2000 server to get the contents of a view in the database. I need to add a couple of bind variables that I can use for searching 'ExecuteWithParams' in my JSF.
    When I click 'Add' to add a bind variable, I get the subject warning. My query has the selected attributes with 'AS Emp_No' for instance. If I want to add to the where clause 'AND EMP_NO = :EmpIdVar' as I would do in the Oracle way, how can I do it in the JDBC Positional way and avoid the warning above?
    Thanks!

    Bug 6041448 details a problem with setting the index positions of a named bind variable when the View Object's binding style is "Oracle Positional" or "JDBC Positional".
    The workaround involves not using named bind variables, and just using the ? bind variable indicators in the query without formally defining the named bind variables.
    You could adopt a technique like the one described in section "10.5.2 How to Work with Named View Object Bind Variables" of the ADF Developer's Guide for Forms/4GL Developers on the ADF Learning Center (at http://www.oracle.com/technology/products/adf/learnadf.html) as an alternative to using ExecuteWithParams [whose use required named bind parameters]. Instead, you would write a custom method on your view object that accepts your two parameters, then inside this method it would set the correct posititional parameters using setWhereClauseParam().
    Once you've added the custom method to the view object's client interface, then you can drop the custom method from the data control palette just like the ExecuteWithParams and use it in basically the same ways.

  • Make List of Values for Required Bind Variables

    In the SQL query for my View Object, I have a bind variable, which I set to "required". In the search form resulting from a View Criteria, a textbox shows up asking the user for the value of that variable. Is there a way to make it a List of Values instead?

    Hi WV,
    Create a transient attribute in your VO that contains the LOV and then set the value of your bind variable to point to this new transient attribute. Also here is another approach
    https://blogs.oracle.com/shay/entry/adf_query_with_parameters_and
    Let us know how it goes.
    -Juan Camilo

  • How to get the results for given Bind Variable

    Hi
    Can any one help me how to get the result rows from the View Object after executing the view object query by setting bind variable?
    snippet as follows
    viewObject.setNamedWherClauseParams("name","hei");
    viewObject.executeQuery();
    How to get the results from viewObject is my question..?
    Thanks in advance

    Should be something like
    while (vo.hasNext()){
    Row r = vo.next();
    r.getAttribute....
    You might want to read the "most commonly used methods" appendix in the ADF Developer Guide.

  • ORA-01722: invalid number caused with SQL using bind variable

    Hi,
    Im am hoping that someone can help me resolve a problem thats only just services and is being experienced on quite a few clients.
    our application uses C++ exes and makes OCI calls to the database.
    what has happened in the last week or so, there has been quite a few invalid number errors being received on a prod server but strangly enough we cannot reproduct the error on our UAT system.
    The sql is using bind variables and the information in the trace file shows that a number is being used for the bind variable, here is an extract from one trace file:
    for some schemas, the bind variable value is some currupted value, i think:
    oacdty=01 mxl=32(21) mxlc=00 mal=00 scl=00 pre=00
    oacflg=03 fl2=1206001 frm=01 csi=178 siz=32 off=0
    kxsbbbfp=9a8d62b8 bln=32 avl=03 flg=05
    value="Â*d"
    but on another schema, the value used is:
    Bind#0
    oacdty=01 mxl=32(32) mxlc=00 mal=00 scl=00 pre=00
    oacflg=03 fl2=1206001 frm=01 csi=178 siz=32 off=0
    kxsbbbfp=c5f92718 bln=32 avl=04 flg=05
    value="2101"
    however both produce invalid number errors.
    I am relatively inexperienced as a DBA so would appreciate as much help as i can get.

    Could you post your sql statement that is being run.
    Also post the query plan from your uat system and the one from your production system (They are likely to be different)
    You can export the stats from your production system and run them in your uat system. If you do this, then the execution plans should be the same on both systems(dbms_stats) and if you have the same data you should run into the same problem on uat as in production.
    The root cause of this type of problem is having a column in a table which holds values which are of different datatypes. Typically there is a condition in the where clause which indicates that for example only numeric columns should be retrieved from the column which holds multiple data types. However since the optimizer is free to rewrite the query any way it sees fit, (It does not necessarily execute in the order the sql statement is written) it does not filter this data first, and therefore you hit non-numeric data and run into the invalid number error.
    You can use little techniques like using an inline view with rownum in the column list, to perform the first filter. This ensures that the inline view is executed on its own, rather than being merged (materialized) with the rest of the query.
    A quick temporary solution is to use a comparison like to_char(column_name) = variable
    Make sure your comparisons are correct and it doesn't negatively impact on performance of the query

  • Prompt for bind variables in SQL developer

    Hi!
    Just installed the latest 3.2 version of SQL Developer, and tried to do an explain plan.
    Now the tool prompts me for values for the bind variable. It didn't do that in my previous version (version 3. something).
    Thats anoying :-)
    How do I disable that feature?
    Example:
    explain plan for
    select * from emp
    where department_id = :1;
    If i right click on the statement or press F10, I get no prompt for the bind variable...
    Regards
    Søren

    Old fashioned way, like this:
    EXPLAIN PLAN FOR
    SELECT * FROM scott.emp
    where deptno = :1;
    SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
    Executed with F5 gives me this output
    plan FOR succeeded.
    PLAN_TABLE_OUTPUT
    Plan hash value: 3956160932
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 5 | 190 | 3 (0)| 00:00:01 |
    |* 1 | TABLE ACCESS FULL| EMP | 5 | 190 | 3 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    1 - filter("DEPTNO"=TO_NUMBER(:1))
    13 rows selected

  • Asking for bind variable where none is needed

    Good Morning,
    I am still working these regexp date_time project.
    I have a problem where oracle is asking for a bind variable where it doesn't need any as far as I can see. I am trying to capture various date times in a column and formatting them into one default format used by oracle. Here is what I got which works before I wrap it in the TO_DATE function
    There are many when then's but I am using only one here.
    select case
    when regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}') is not null
    then regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}')
    else date_time
    end as new_time
    from raw_data;
    The above statement works
    Now when I want to format the date that I found with this:
    select case
    when regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}') is not null
    then TO_DATE('regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}')','MM/DD/YYYY')
    else date_time
    end as new_time
    from raw_data;
    I get a request to insert a value for the digit as a bind variable. The digit should be populated from the when statement when it returns not null when a date is found.
    Could some one please tell me even if what I wrote here is even possible or make a suggestion to the syntax to get around this issue?
    All this is going to be incorporated into an update statement later on.
    I am running this on sql developer, oracle 11g.
    Thanks for your help in this matter in advance.
    regards,
    Al

    From looking at the code, as you have not supplied any scripts to create a table and demonstrate the error...
    Your case statement is trying to return two types
    select case
    when regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}') is not null
    then TO_DATE('regexp_substr(date_time,'^(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])/9[[:digit:]]{4}')','MM/DD/YYYY')
    else date_time
    end as new_time
    from raw_data;or simply
    select case when <expr>
                then <RETURN A DATE>
                else <RETURN A VARCHAR2>
            end as new_time
      from raw_data;The column cannot be both.
    Sorry I don't know your requirements.
    You could drop the else part and just return the converted date.
    You could fetch it back in two columns, the ones you can convert in one column (Which would be an oracle date type),
    the ones you cannot convert in another (which would be varchar2).
    Cheers,
    GP>

  • Identify bind variable data type 121?

    Looks like the OCI forum is not popular. Reposting here with hopes of better luck... Or perhaps I wasn't specific enough for the forum? OK, this is obviously a binary data type. The problem is that I want to know exactly which of them it is. Or I'd like to know if someone has improperly coded an OCI application. Here's the original post.
    I received a level 12 SQL trace file that referenced data type 121 for a bind variable value. I have searched unsuccessfully for documentation in many places. Can anyone tell me what data type this is? Following is the relevant excerpt from the trace file.
    bind 18: dty=121 mxl=4000(4000) mal=00 scl=00 pre=00 oacflg=00 oacfl2=1 size=4000 offset=0
    bfp=022c1e80 bln=4000 avl=2196 flg=15
    value=
    Dump of memory from 0x22C1E80 to 0x22C2714
    22C1E80 01A214BC 022C1E88 022F1F88 01E0A954 [.....,.../.....T]

    Hi
    The following are the internal datatypes used by oracle related to 121.
    KOTAD, KOTMD, KOTMI, KOTTB, KOTTD
    Not sure about their exact use but these datatypes might be used internally for LOB's.
    Hope it helps.
    Diwakar

  • How to see values for bind variables in statspack output

    Hi all.
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
    PL/SQL Release 9.2.0.4.0 - Production
    CORE 9.2.0.3.0 Production
    TNS for Solaris: Version 9.2.0.4.0 - Production
    NLSRTL Version 9.2.0.4.0 - Production
    Running sprepsql.sql to get full sql and explain plan from hash value...
    SQL comes back with bind variables :1, :2, :3 etc.
    How can I find out what the values are for the bind variables so i can plug them in and run them in test db?
    Thanks for all your help.

    I don't have a trace file...
    I need to know what the values are and if there is anyway to see them from the output of the sprepsql...
    currently looks like:
    select
    r.status,
    NVL(r.required_date, to_date('12/31/3999', 'MM/DD/YYYY')),
    r.calc_qty,
    r.issued_qty,
    r.workorder_type,
    r.workorder_base_id,
    r.workorder_lot_id,
    r.workorder_split_id,
    r.workorder_sub_id,
    r.operation_seq_no,
    r.piece_no,
    r.warehouse_id,
    0,
    wbs_code
    from
    REQUIREMENT r
    where r.part_id = *:1*
    and r.workorder_type = 'W'
    and r.calc_qty > r.issued_qty
    and r.subord_wo_sub_id is null
    AND STATUS IN ('R', 'S','U','H','F')
    AND WAREHOUSE_ID = *:2*
    Thanks for your help.

  • Maximum Size of bind variables/model names in a SPARQL query

    I was wondering what the maximum field size is for a bind variable (?'' being used in the subject or object within a triple) in a SPARQL query using the Jena Adapter for Oracle? The reason for this is that I keep getting Oracle exception (ORA-00972: identifier is too long) when executing queries.
    The other question dealt with the max size of the model names? Is there anyway to increase this length by extending certain classes within the Jena Adapter for Oracle?
    Thanks,
    Rahul

    Hi,
    For model names, because we use model names together with some suffixes to create namespace tables, application tables, and indexes, the length
    has to be shorter than 30 bytes - 11 bytes = 19 bytes.
    Note that 30 bytes limit is imposed by Oracle database. You cannot create a table with a name longer than 30 bytes.
    11 bytes is the maximum suffix length imposed by Jena Adapter. We are considering to reduce it to 4 for the next Jena Adapter release.
    For variable names, because we translate SPARQL to SQL queries (and variable name to column alias), there is the same 30 bytes limit.
    Note that there are suffixes for variable names as well. For example, $RDFVID, $RDFLTYP, ... These suffixes are used internally.
    Some simple tests for illustration purpose.
    SQL> create table a23456789012345678901234567890(i int);
    Table created.
    SQL> create table a234567890123456789012345678901(i int);
    create table a234567890123456789012345678901(i int)
    ERROR at line 1:
    ORA-00972: identifier is too long
    -- Assume table X has a column I
    SQL> select i as "v23456789012345678901234567890" from x;
    no rows selected
    SQL> select i as "v234567890123456789012345678901" from x;
    select i as "v234567890123456789012345678901" from x
    ERROR at line 1:
    ORA-00972: identifier is too long
    Hope it helps,
    Zhe Wu

Maybe you are looking for

  • Install Windows 8.1 Pro on Mac Mini Late 2014

    I'm trying to install Bootcamp on my Mac Mini.  Windows reports that it cannot install or create a partition on the drive after formatting the BOOTCAMP partition as NTFS. This is my setup: 1. Mac Mini Late 2014 with 2TB Fusion Drive. 2. Windows 8.1 P

  • TS5296 MacBook Pro (Retina, 15-inch, Late 2013): Keyboard and Multi-Touch trackpad unresponsive

    Brand new Macbook PRO Retina 15inch. (1 day old) Running 10.9 EFI 1.2 installed. Keyboard/trackpad hangs when using the left USB. The EFI update 1.3 apparently fixes this issue for the 13inch macbook pro. I have a 15inch macbook pro. The EFI update 1

  • Using different templates for different user access types.

    Hi all, I have an issue where we have a Page Group with lots of pages/sub-pages. There are three different User Groups, Internal, Customer and Supplier. I need to display the same content but with different templates (look and feel), one for the Inte

  • How to wipe hard drive to sell without disks

    I am selling my 13"  macbook pro  (anyone interested?) I need to wipe or restore my hard drive to protect my information. What is the best way to do this without having to purchase the disks? Thanks!

  • Some of my links don't work

    Hi, Two of my links don't work. I've done 'select all' and there is nothing covering them and they are not touching anything. If I move them right up the page they work. I've tried them on other pages as a test and in some places they work and others