Parameters in where clause
Hi,
Can we use lexical parameter in the where clause to select multiple values using IN operator. I am using IN operator to match to values in the where cluase, so do I need to use a lexical parameter or bind parameter for it.
Please help.
Thanks Rainer,
I've tried it but it's giving me an error. Please look at my sql and let me know if there is any syntax error.
SELECT COLA , COLB, COUNT(*)
FROM TABL_A
WHERE COLA LIKE :P_NAME
AND COLB IN &P_SIGN
GROUP BY 1,2
This query gives me an error: invalid use of lexical paramter. However, I have defined it in user parameters as character.
When I give parameter with qoutation like '&P_SIGN' then it accept the query but still don't match all the values in the IN operator.
thanks.
Similar Messages
-
How to pass LOV Where clause params from Page CO
Dear Members,
I have an OAF Page for which I defined a CO.
I also have an LOV for which I have two parameters in where clause.
Now my requirement is to pass the two values to the where clause parameters of LOV from the CO of the respective page.
Can any one please guide me in achieving this requirement.
Best Regards,
Arun ReddyHi Arun
as gyan, suggested try attching a new controller to lov , or extend its existing controller.
In the page CO
store the parameter that needs to be passed to lov in pageContext.putSessionValue(paramName,paramValue)
In the CO of Lov page , in processrequest
retrive the stored values using pageContext.getSessionValue(paramName)
Regards
Ravi -
Using Parameters in SQL-Query not only in where clauses
Hi,
I try to use Publisher parameters in the SQL Query from a Data Set.
All of them have default values.
So far, this is no problem, unless I try to use such a parameter value as an ordinary attribute value:
>
select
case when (:pv_Group = 'no') then "DM15D_BETRIEBSTEIL"."BETR_TEIL"
else :pv_some_Text end as Betr_Teil,
case when (:pv_Group = 'no') then "DM15D_BETRIEBSTEIL"."SUVA_NR_FORM"
else :pv_some_Text end as Suva_Nr,
case when (:pv_Group = 'no') then "DM15K_RIS_FAKTEN_PRO_BTT_JHR"."RIS_VOLLBESCH"
else sum("DM15K_RIS_FAKTEN_PRO_BTT_JHR"."RIS_VOLLBESCH") end as Vollbesch
from "GDWH05"
where
"DM15D_BETRIEBSTEIL"."SUVA_NR_FORM" in (:pv_nim100)
fetch first 65001 rows ONLY
>
The parameters 'pv_Group' and 'pv_nim100' are working fine. (when or where clauses)
The parameter 'pv_some_Text' unfortunately not. (simple literals)
When I try to validate the above SQL, I get the following Error:
<font color="red">
java.io.IOException: prepare query failed[nQSError: 43113] Message returned from OBIS. [nQSError: 46033] Datatype: 25 is not supported.
</font>
After use a cast function:
>
else CAST(:pv_some_Text AS CHARACTER)
>
I get this ERROR:
<font color="red">
java.io.IOException: prepare query failed[nQSError: 43113] Message returned from OBIS. [nQSError: 19002] Incorrect use of parameters. The parameters used in CAST cannot be resolved without ambiguity.
</font>
We use OBIEE 11.1.1.6.4 on a Win64-System.
Thank's for any help.Hi Alex,
let's leave away any unnecessary details.
This is the SQL, inserted in the window 'Edit Data Set' of BIP Data Model:
>
select
'--1' as Betr_Teil,
'--2' as Suva_Nr,
sum("GDWH05"."DM15K_RIS_FAKTEN_PRO_BTT_JHR"."RIS_VOLLBESCH") as Vollbesch
from "GDWH05"
where
"DM15D_BETRIEBSTEIL"."SUVA_NR_FORM" in ('122-4.4')
fetch first 65001 rows ONLY
>
Everything is fine when I click OK, the script goes back to the metadata.
Let's try this script with bind values in ORACLE SQL Developer.
This SQL is the physical part, found in the OBIEE-Log (Log level 5), except the bind values. Therefore we find, in the where clause, the join. In the logical sql, we don't have to join, because it's handled in the Common Enterprise Information Model (CEIM)
>
with
sawith0 as
select
sum(t39617.ris_vollbesch) as c1
from
dm15d_betriebsteil t39455,
dm15k_ris_fakten_pro_btt_jhr t39617
where
t39455.id_betriebsteil = t39617.id_betriebsteil
and t39455.suva_nr_form = '122-4.4'
select
d1.c1 as c1,
d1.c2 as c2,
d1.c3 as c3
from
select
:pv_some_text as c1,
:pv_some_text as c2,
sum(d1.c1) as c3
from
sawith0 d1
d1
where
rownum <= 65001
>
This SQL works fine, even with bind values for 'pv_some_text'.
But, when using the following SQL in the BIP Data Model:
>
select
:pv_Text as Betr_Teil,
:pv_Text as Suva_Nr,
sum("GDWH05"."DM15K_RIS_FAKTEN_PRO_BTT_JHR"."RIS_VOLLBESCH") as Vollbesch
from "GDWH05"
where
"DM15D_BETRIEBSTEIL"."SUVA_NR_FORM" in ('122-4.4')
fetch first 65001 rows ONLY
>
The following ERROR occurs:
<font color="red">java.io.IOException: prepare query failed[nQSError: 43113] Message returned from OBIS. [nQSError: 46008] Internal error: File server\Query\Optimizer\ServiceInterfaceMgr\Utility\Src\SQOIUTypeVisitor.cpp, line 643.</font>
In my opinion, either I use a wrong syntax, or BIP has a problem with parsing the script.
Thank you for your most welcome help. -
NVL in where clause not working with UNIX parameters
Apparently this in a where clause does not work in UNIX scripts...
.... and trans_date between to_date('&1','YYYY/MM/DD HH24:MI:SS')
and to_date(NVL('&2','31-DEC-4712'),'YYYY/MM/DD HH24:MI:SS')
and to_date(NVL('','31-DEC-4712'),'YYYY/MM/DD HH24:MI:SS')
ERROR at line 14:
ORA-01858: a non-numeric character was found where a numeric was expected
How do I get around a null in UNIX? This works fine if both parameters are populated. Thanks.Jason ORCL wrote:
Apparently this in a where clause does not work in UNIX scripts...
.... and trans_date between to_date('&1','YYYY/MM/DD HH24:MI:SS')
and to_date(NVL('&2','31-DEC-4712'),'YYYY/MM/DD HH24:MI:SS')
and to_date(NVL('','31-DEC-4712'),'YYYY/MM/DD HH24:MI:SS')
ERROR at line 14:
ORA-01858: a non-numeric character was found where a numeric was expected
How do I get around a null in UNIX? This works fine if both parameters are populated. Thanks.it's nothing to do with unix at all - your date value doesn't match the format mask that you've entered:
'31-DEC-4712' doesn't map to 'YYYY/MM/DD HH24:MI:SS' in any universe unfortunately. -
Binding parameters to dynamic VO with PL/SQL API call with no where clause
Hi all,
I am required to change exisiting queries to queries with "bind" parameters. Some of our VOs are dynamic and with PL/SQL api calls like below:
String stmtStr = "selectXXX_API_UTILS.chk_urg_since_last_prg("
+ projectId + "," + PPCId + ",'XYZ_TASKS'," + taskId+ ")"
+" from dual ";
ViewObject tmpVO = transaction.createViewObjectFromQueryStmt(stmtStr);
In this regard, I am unsure how to bind the PPCId and taskId parameters to the VO. setWhereClauseParams() would not work here as there is now where clause.
Thanks in advance,
SriniIn case of preparedStatement, we mention bind parameters to be passed using "?". Then we pass paramters sequencially.
But in the your case following is enough:
int projectId = 100 ; (hardcoding values for example)
int taskId = 500 ;
String stmtStr = "selectXXX_API_UTILS.chk_urg_since_last_prg("
+ projectId + "," + PPCId + ",'XYZ_TASKS'," + taskId+ ")"
+" from dual ";
-Anand -
How to pass parameters to function in where clause....
I have a select statement like this
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
is it possible to pass to variable p2 from where clause
like
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
where :p2 = :p1
user can enter only in p1 so that p2 should get passed.
Reson for this wierd requirement:In Oracle apps i cant use bind variable in select clause value set..? please ignore this reason if u are not in oracle apps...
Tell me the solution..
Is there any way...
setting some env variavle aor anything[email protected] wrote:
I have a select statement like this
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dualWhy a SELECT statement? This calls the SQL engine. The function is PL/SQL. This now needs the SQL engine to context switch to the PL engine. The PL engine runs and returns a value (across memory boundaries) to the SQL engine. The SQL engine now needs to return that value as part of the output from a SQL cursor.
Why do all this? Surely it is a lot easier and better for performance to call the PL engine directly using an anonymous PL block. E.g.
begin
:P3 := XX_AIR_TICKET_EMP_BAL(:P2);
end;
is it possible to pass to variable p2 from where clause
like
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
where :p2 = :p1Why?
This can be done as part of the PL block as follows:
begin
if :P2 = :P1 then
:P3 := XX_AIR_TICKET_EMP_BAL(:P2);
end if;
end;But then why construct conditional statements dynamically?
It would be a lot easier to have a new function that does the condition, e.g.
create or replace function getAirTicket( p1 number, p2 number ) return number is
begin
if p1 = p2 then
return( XX_AIR_TICKET_EMP_BAL(p2) );
else
return( null );
end if;
end; -
Passing Multiple Parameters to a Where clause
Dear All,
Using Crystal 11.5 on XP workstations, communicating with a SQL database.
I want to allow users to input two or three or four Meeting codes -- text fields about 10 characters -- into a Crystal multiple parameter field. Then I want to use those names to access data for each meeting, grouping on the meeting . . .
WHERE meeting.name = 'MeetingCode1' or meeting.name = 'MeetingCode2 or meeting.name = 'MeetingCode3'
I've tried just using "IN" with the parameter and that won't work for this -- though it seems to get data for cvross tabs which is puzzling. I've tried using the JOIN function to parse out the data and build the WHERE clause and have been unsuccessful (but if you tell me that should work, I can go at it again that way -- all kinds of issues there comparing it to Crystal's SQL view.
Any thoughts about how to tackle this would be greatly appreciated.
Sincerely,
Ridge (in New Joisey)I just tested this again -- going very slowly and very carefully -- and it seems to be working setting the
{ table.field} IN
for both numeric and string values.
Sorry for wasting bandwidth.
R -
Derive found flag in SQL with where clause using TABLE(CAST function
Dear All,
Stored procedure listEmployees
==========================
CREATE OR REPLACE TYPE STRING_ARRAY AS VARRAY(8000) OF VARCHAR2(15);
empIdList STRING_ARRAY
countriesList STRING_ARRAY
SELECT EMP_ID, EMP_COUNTRY, EMP_NAME, FOUND_FLAG_
FROM EMPLOYEE WHERE
EMP_ID IN
(SELECT * FROM TABLE(CAST(empIdList AS STRING_ARRAY))
AND EMP_COUNTRY IN
(SELECT * FROM TABLE(CAST(countriesList AS STRING_ARRAY))
=================
I have a stored procedure which lists the employees using above simple query.
Here I am using table CAST function to find the list of employees in one go
instead of looping through each and every employee
Everything fine until requirements forced me to get the FOUND_FLAG as well.
Now I wanted derive the FOUND_FLAG by using rownum, rowid, decode functions
but I was not successful
Can you please suggest if there is any intelligent way to say weather the
row is found for given parameters in the where clause?
If not I may have to loop through each set of empIdList, countriesList
and find the values individually just to set a flag. In this approach I can’t use
the TABLE CAST function which is efficient I suppose.
Note that query STRING_ARRAY is an VARRAY. It is very big in size and this procedure
suppose to handle large sets of data.
Thanks In advance
Regards
Charan
Edited by: kmcharan on 03-Dec-2009 09:55
Edited by: kmcharan on 03-Dec-2009 09:55If your query returns results, you have found them... so your "FOUND" flag might be a constant,...
-
Function-based index with OR in the wher-clause
We have some problems with functin-based indexes and
the or-condition in a where-clause.
--We use Oracle 8i (8.1.7)
create table TPERSON(ID number(10),NAME varchar2(20),...);
create index I_NORMAL_TPERSON_NAME on TPERSON(NAME);
create index I_FUNCTION_TPERSON_NAME on TPERSON(UPPER(NAME));
The following two statements run very fast on a large table
and the execution-plan asure the usage of the indexes
(-while the session is appropriate configured and the table is analyzed):
1) select count(ID) FROM TPERSON where upper(NAME) like 'MIL%';
2) select count(ID) from TPERSON where NAME like 'Mil%' or (3=5);
In particular we see that a normal index is used while the where-clause contains
an OR-CONDITION.
But if we try the similarly select-statement
3) select count(ID) FROM TPERSON where upper(NAME) like 'MIL%' or (3=5);
the CBO will not use the function-index I_FUNCTION_TPERSON_NAME and we have a full table scan in the execution-plan.
(This behavior we only expect with views but not with indexes.)
We ask for an advice like a hint, which enable the CBO-usage
of function-based indexes in connection with OR.
This problem seems to be artificial because it contains this dummy logic:
or (3=5).
This steams from an prepared statement, where this kind of boolean
flag reduce the amount of different select-statements needed for
covering the hole business-logic, while using bind-variables for the
concrete query-parameters.
A more realistic (still boild down) version of our select-statement is:
select * FROM TPERSON
where (upper(NAME) like 'MIL%' or (NAME is null))
and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
and ...;
thank you for time..
email: [email protected]In the realistic statement you write :
select * FROM TPERSON
where (upper(NAME) like 'MIL%' or (NAME is null))
and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
and ...;
as far as i know, NULL values are not indexed, "or (NAME is NULL)" have to generate a full table scan.
HTH
We have some problems with functin-based indexes and
the or-condition in a where-clause.
--We use Oracle 8i (8.1.7)
create table TPERSON(ID number(10),NAME varchar2(20),...);
create index I_NORMAL_TPERSON_NAME on TPERSON(NAME);
create index I_FUNCTION_TPERSON_NAME on TPERSON(UPPER(NAME));
The following two statements run very fast on a large table
and the execution-plan asure the usage of the indexes
(-while the session is appropriate configured and the table is analyzed):
1) select count(ID) FROM TPERSON where upper(NAME) like 'MIL%';
2) select count(ID) from TPERSON where NAME like 'Mil%' or (3=5);
In particular we see that a normal index is used while the where-clause contains
an OR-CONDITION.
But if we try the similarly select-statement
3) select count(ID) FROM TPERSON where upper(NAME) like 'MIL%' or (3=5);
the CBO will not use the function-index I_FUNCTION_TPERSON_NAME and we have a full table scan in the execution-plan.
(This behavior we only expect with views but not with indexes.)
We ask for an advice like a hint, which enable the CBO-usage
of function-based indexes in connection with OR.
This problem seems to be artificial because it contains this dummy logic:
or (3=5).
This steams from an prepared statement, where this kind of boolean
flag reduce the amount of different select-statements needed for
covering the hole business-logic, while using bind-variables for the
concrete query-parameters.
A more realistic (still boild down) version of our select-statement is:
select * FROM TPERSON
where (upper(NAME) like 'MIL%' or (NAME is null))
and (upper(FIRSTNAME) like 'MICH% or (FIRSTNAME is null))
and ...;
thank you for time..
email: [email protected] -
Using bind variable in dynamic where clause and concatenate with query
Hi,
In my procedure i am framing where clause dynamically with bind variable,When i am concatenate this with my sql query for REF CURSOR i got sql command not properly ended exception.
Is it possible to pass values to the bind variable through the dynamic variable/value?
Please advise
Thanks in advance
Siva
IF in_applicationId IS NOT NULL THEN
optional_where := optional_where || ' AND a.APPLICATION_ID like '||':e%';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'||',in_queue_id'||',in_applicationId';
END IF;
My query is like this
open Out_Main FOR SelectQuery USING optional_usingThanks for reply,
In my procedure, i suppose to frame the where clause with bind dynamically according to the input parameters. so that i am framing the values of the bind variables also dynamically like this,
Please advise...
IF in_assignedAppFlag IS NOT NULL THEN
IF in_assignedAppFlag = 'Y' THEN
optional_where := optional_where || ' AND b.ASSIGNED_TO = :b' ;
optional_using := ' in_appFuncGroup'||',in_currentUserID';
ELSe
IF in_isSupervisor = 0 THEN
optional_where := optional_where || ' AND (b.ASSIGNED_TO = :b'||' OR b.ASSIGNED_TO = ''-1'' OR b.ASSIGNED_TO IS NULL)';
optional_using := ' in_appFuncGroup'||',in_currentUserID';
END IF;
END IF;
ELSE
IF in_isSupervisor = 0 THEN
optional_where := optional_where || ' AND (b.ASSIGNED_TO = :b'||' OR b.ASSIGNED_TO = ''-1'' OR b.ASSIGNED_TO IS NULL)';
optional_using := ' in_appFuncGroup'||',in_currentUserID';
END IF;
END IF;
IF in_appFuncGroup IS NOT NULL THEN
optional_where := optional_where || ' AND e.APP_FUNC_GROUP= :c';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup';
END IF;
IF in_queue_id IS NOT NULL THEN
optional_where := optional_where || ' AND b.QUEUE_ID = :d';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'||',in_queue_id';
END IF;
IF in_applicationId IS NOT NULL THEN
optional_where := optional_where || ' AND a.APPLICATION_ID like '||':e%';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'||',in_queue_id'||',in_applicationId';
END IF;
IF in_sourceCode IS NOT NULL THEN
optional_where := optional_where || ' AND e.APP_SOURCE_CODE like '||':f%';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'
||',in_queue_id'||',in_applicationId'||',in_sourceCode';
END IF;
IF in_logo IS NOT NULL THEN
optional_where := optional_where || ' AND appProds.PRODUCT_TYPE like '||':g%';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'
||',in_queue_id'||',in_applicationId'||',in_sourceCode'||',in_logo';
END IF;
IF in_firstName IS NOT NULL THEN
optional_where := optional_where || ' AND upper(a.FIRST_NAME) like upper(:h%)';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'
||',in_queue_id'||',in_applicationId'||',in_sourceCode'||',in_logo'||',in_firstName';
END IF;
IF in_surName IS NOT NULL THEN
optional_where := optional_where || ' AND upper(a.SURNAME) like upper(:i%)';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'
||',in_queue_id'||',in_applicationId'||',in_sourceCode'||',in_logo'||',in_firstName'||',in_surName';
END IF;
IF in_retreival_id IS NOT NULL THEN
optional_where := optional_where || ' AND e.RETREIVAL_ID like :j%';
optional_using := ' in_appFuncGroup'||',in_currentUserID'||',in_appFuncGroup'
||',in_queue_id'||',in_applicationId'||',in_sourceCode'||',in_logo'||',in_firstName'||',in_surName'||',in_retreival_id';
END IF; -
Values from a Multi-Select in the where clause of a Select statement
I have a web page that solicits query parameters from the user.
The selections that the user makes will populate the WHERE clause of a Select statement.
One of the controls on the page is a multi-select control.
When this page posts, I would like to execute a Select statement wherein the selected values from this control appear in the .. Column IN ( <list here> ) portion of the WHERE clause.
This is an extremely common scenario, but I cannot seem to locate a how-to or message thread that addresses this specific case.
I have an idea that it may involve dynamic SQL or Execute Immediate, but cannot seem to pin down the answer.
Any help would be greatly appreciated!anonymous - As illustrated here: Re: Search on a typed in list of values
Scott -
No output for XML Publisher Report using CASE/DECODE in Where Clause
Hi,
I've a business requirement to modify an existing report which has two input parameters,
-> p_statcode (Closed Status) which can have values 'Y' or 'N'
-> p_overdue (Overdue Flag) which can have values 'Y' or 'N'
The Overdue Flag is an evaluated column having values of Y/N and it is evaluated as follows,
ONTF_MOD_VAL(NVL (
(TRUNC (SYSDATE)
- (TO_DATE (oe_order_lines.attribute18,
'DD-MON-RRRR')
+ TO_NUMBER (fnd_lookup_values.meaning))),
0
overdue_flagThe user requirement now is they needs to be a third option for parameter p_overdue called ALL,
passing which the output should include records having
p_statcode is Y ELSE p_statcode is N AND p_overdue is Y OR p_overdue is N
In other words records having both Y and N vlaues for Overdue Flag have to be returned irrespective of the value given to Closed Status.
Original where clause in the Data Definition file is as follows,
WHERE Closed_Status = nvl(:p_statcode,Closed_Status)
AND overdue_flag = nvl(:p_overdue,overdue_flag)My modified code is as follows,
WHERE Closed_Status = NVL (:p_statcode, Closed_Status)
AND overdue_flag = (CASE
WHEN :p_overdue = 'Y' THEN 'Y'
WHEN :p_overdue = 'N' THEN 'N'
ELSE overdue_flag
END)
OR
WHERE Closed_Status = NVL (:p_statcode, Closed_Status)
AND overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag)Both approaches have the same problem.
The output is in EXCEL format. The modified query works fine for p_overdue as Y or N but when p_overdue is passed as ALL it returns an empty EXCEL sheet with just the report output column headers.
Any help as to why this is the case ?? What is wrong in my approach ?
Regards,
Vishalnot clear about p_overdue = ALL
which values needed for p_overdue = ALL ?
try smth like
WHERE Closed_Status = NVL (:p_statcode, Closed_Status)
AND (
overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag) and :p_overdue != 'ALL'
or
:p_overdue = 'ALL' and (overdue_flag = 'Y' or overdue_flag = 'N')
)for overdue_flag which has more then 'Y', 'N' values
if overdue_flag only in ('Y','N') then
WHERE Closed_Status = NVL (:p_statcode, Closed_Status)
AND (
overdue_flag = DECODE (:p_overdue, 'Y', 'Y', 'N', 'N',overdue_flag) and :p_overdue != 'ALL'
or
:p_overdue = 'ALL'
) -
How can I pass multiple condition in where clause with the join table?
Hi:
I need to collect several inputs at run time, and query the record according to the input.
How can I pass multiple conditions in where clause with the join table?
Thanks in advance for any help.
Regards,
TDIf you are using SQL-Plus or Reports you can use lexical parameters like:
SELECT * FROM emp &condition;
When you run the query it will ask for value of condition and you can enter what every you want. Here is a really fun query:
SELECT &columns FROM &tables &condition;
But if you are using Forms. Then you have to change the condition by SET_BLOCK_PROPERTY.
Best of luck! -
OA Framework LOV – How to add where clause dynamically at runtime
Hi All,
Following is my page design:
MainAM (This is root Application module) Package is: mycompany.oracle.apps.<product>.<project>.server
MainPageVO (This is the View Object associated to Main AM)
LovAM (This Application module is for LOVs) Package is: mycompany.oracle.apps.<product>.<project>.lov.server
FileNameLovVO (This is the View Object is for "File Name" LOV. It is associated LovAM)
I my main page is attached to the "Main AM". In the main page, I have a custom search region and in that there is a messageLovInput type of field based on "FileNameLovVO". The field name is File Name.
Use Case:
When a user opens the page, I determine user type. If the use is a clerk (not a superuser) then I need to restrict values in my File Name LOV by setting where clause dynamically.
Issue1:
====
In the main page controller when I do following, OA Framework is not able to access the "FileNameLovVo".
1. Following code is from the main page's controller:
String userId = 100;
LovAMImpl lovAm = new LovAMImpl();
Serializable[] lovParameters = {userId};
Class[] lovParamTypes = { String.class };
lovAm.invokeMethod("initLovQuery", lovParameters, lovParamTypes);
2. In LovAMImpl class I have created following method:
public void initLovQuery(String useId)
FileNameLovVOImpl fileNameLovVo = getFileNameLovVO1(); // ******This returns NULL*******
if (fileNameLovVo == null)
MessageToken[] errTokens = { new MessageToken("OBJECT_NAME", "getFileNameLovVO1")};
throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens);
fileNameLovVo.initQuery(userId);
In the above code "FileNameLovVOImpl fileNameLovVo = getFileNameLovVO1();" is returning NULL.
Please let me know what am I missing here.
I resolved above issue with following work around:
1. Attached "FileNameLovVO" to "MainAM"
2. Moved initLovQuery(String useId) method to "MainAMImpl" class.
Is that the correct way? I would prefer NOT to attach "FileNameLovVO" to "MainAM". Any suggestions?
Issue2:
====
After using above work around I tried to set WHERE clause dynamically:
FileNameLovVO is based on following SQL query:
SELECT DISTINCT file_name FROM <table> WHERE USER_ID like :1
I need to pass value for USER_ID if the user is a clerk and I need to pass '%' if the user is a supper user. I'm passing value in "LovVo.initQuery(userId)" method using following code:
public void initQuery(String userId)
StringBuffer whereClause = new StringBuffer(1000);
Vector parameters = new Vector(1);
int bindCount = 0;
setWhereClauseParams(null);
if ((userId != null) && (!("".equals(userId.trim()))))
parameters.addElement(servicerId);
whereClause.append(++bindCount);
if (bindCount > 0)
Object[] params = new Object[bindCount];
parameters.copyInto(params);
setWhereClauseParams(params);
executeQuery();
When I select LOV at runtime in the page, it fails with following error:
oracle.apps.fnd.framework.OAException: oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation. Statement: SELECT * FROM (SELECT DISTINCT file_name FROM <table> WHERE user_id LIKE :1) QRSLT WHERE (( UPPER(FILE_NAME) like :1 AND (FILE_NAME like :2 OR FILE_NAME like :3 OR FILE_NAME like :4 OR FILE_NAME like :5))) ORDER BY file_name desc
OA Framework tries to create following statement:
SELECT *
FROM (SELECT DISTINCT file_name
FROM <table>
WHERE user_id LIKE :1) qrslt
WHERE (( UPPER (file_name) LIKE :1
AND ( file_name LIKE :2
OR file_name LIKE :3
OR file_name LIKE :4
OR file_name LIKE :5
ORDER BY file_name DESC
Any help is greatly appreciated.
Thanks for your help guys.
MiteshI have a lovinput item which has an external LOV attached to it - the VO uses the below sql query. I want to display the addresses of the customer accounts belonging to the customer name or account entered. I have a PPR event in the account number field which is calling the onAccountNumber method in my AM - the method is getting triggered when you enter the account number and the vo returns the rowcount as 3 exactly but if you click the lovinput item - it brings back all the addresses available instead bringing back addresses beloning to the account number.
public void OnAccountNumber(String accountNumber,String partyName,
Boolean executeQuery)
System.out.println("Im here on account number" + accountNumber + " PartyName:" + partyName);
AddressVOImpl Addrvo= getAddressVO1();
Vector parameters = new Vector(2);
StringBuffer whereClause = new StringBuffer(100);
int clauseCount = 0;
int bindCount = 0;
Addrvo.setWhereClauseParams(null); // Always reset
if ((accountNumber != null) && (!("".equals(accountNumber.trim()))))
whereClause.append(" Account_Number = :");
whereClause.append(++bindCount);
parameters.addElement(accountNumber);
clauseCount++;
if ((partyName != null) && (!("".equals(partyName.trim()))))
if (clauseCount >0){
whereClause.append(" AND ");
whereClause.append(" Party_Name like :");
whereClause.append(++bindCount);
parameters.addElement(partyName);
clauseCount++;
Addrvo.setWhereClause(whereClause.toString());
if (bindCount >0)
Object[] params=new Object[bindCount];
parameters.copyInto(params);
Addrvo.setWhereClauseParams(params);
System.out.println("AddressVO:" + Addrvo.getQuery() );
//Addrvo.executeQuery();
System.out.println("Addr Cnt:" + Addrvo.getRowCount());
SQL used in VO
=========
SELECT hl.address1
|| ' '
|| hl.address2
|| ' '
|| hl.address3
|| ' '
|| hl.city
|| ' '
|| hl.postal_code
|| ' '
|| hl.state
|| ' '
|| hl.country address,
hca.account_number,hp.party_name
FROM hz_cust_accounts hca,
hz_cust_site_uses_all hcsu,
hz_cust_acct_sites_all hcs,
hz_party_sites hps,
hz_locations hl,
hz_parties hp
WHERE hcsu.cust_acct_site_id = hcs.cust_acct_site_id
AND hcs.party_site_id = hps.party_site_id
AND hps.location_id = hl.location_id
AND hca.cust_account_id = hcs.cust_account_id
AND hcsu.site_use_code = 'SHIP_TO'
AND hcsu.status = 'A'
AND hp.party_id = hps.party_id
AND hp.party_id = hca.party_id
-- AND account_number=6028
Can someone please tell me how to restrict the addresses lov to an entered account number or customer name?? -
Date functions in WHERE clause? HELP
The following two queries are identical except for how I supply the date values in the where clause, yet the first query using the a custom my_date function runs 30x slower than the one using the TO_DATE() function. Both return DATE types...any reason for the difference?
SELECT * from outcomes
WHERE start_time >=fn_my_date('START_MONTH')
AND start_time < fn_my_date('END_MONTH')+1
-- This runs 30x faster--
SELECT * from outcomes
WHERE start_time >=TO_DATE('08/01/2001','MM/DD/YYYY')
AND start_time < TO_DATE('08/31/2001','MM/DD/YYYY')+1
On the flip side, I've also experienced queries running slower using the TO_DATE() function vs the LAST_DAY(sysdate) for equivalenet dates.
nullI haven't seen the message coming up when using LENGTH or SUBSTR, but every time I connect to a database or attempt to change my preferences (including the "NLS Parameters: Comp" preference), this appears.
You are attempting to set the preference you should be to switch this from ANSI to something else, but SQL Developer is ignoring the preference setting (which I think is a bug).
A way to set the NLS_COMP to something else is to use something like "alter session set nls_comp = BINARY;". Note that changing any preference after that appears to overwrite this and you need to do this for each new connection you start.
Maybe you are looking for
-
Error in Running Cobol program in PeopleSoft OVM
This post is related to [Compiling COBOLs in PSOVM - psrun.mak error - "cob64: can not execute Id". |http://forums.oracle.com/forums/thread.jspa?threadID=1023864&tstart=0] Just creating a new post since I already tagged the previous post as answered.
-
I am having trouble completing the installation of my new Epson Stylus SX438W Wi-Fi printer. The printer is connected to my network and so is my Mac. I have put the Epson software disc in the Mac and followed the procedure to installing everything th
-
emp table : emp_id salary 101 100000 102 90000 103 90000 104 80000 105 65000 106 75000 1] how to retrieve the highest top 3 salaries [i.e. 100000, 90000, 80000] 2] If i want to display the o/p with 2 columns : salary & rank , how should i write the q
-
I down loaded the new imessage for mac from the mountain lion, free trial, but when i try to sign in it says the server encountered an error processing registration. Please try again later. I have put it on my other mac, and no problems with it, i ha
-
Is JSF 1.0 redistributable for commercial apps
We need to write a JSF app and plan to use JSF 1.0 but it says they are sun licensed binaries. So do we need some licensing or can we just use them and redistribute them? Please suggest. Thanks