PreparedStatement with IN sql clause
Hi guyz,
Need ur advice once again...
I am using JDBC 2.0 thin sql driver.
I want a number column in db called TICKET_NUMBER
Here is my problem.
String sql = "select * from TICKETS where TICKET_NUMBER in ?";
ps = edbCon.prepareStatement(sql);
ps.setString(1,"100,200");
Can I do this? Its not working. So does that mean PreparedStatements doesnot support IN clause of the sqls. Help me out.
-Ram
Hi guyz,
Need ur advice once again...
I am using JDBC 2.0 thin sql driver.
I want a number column in db called TICKET_NUMBER
Here is my problem.
String sql = "select * from TICKETS where
here TICKET_NUMBER in ?";
ps = edbCon.prepareStatement(sql);
ps.setString(1,"100,200");
Can I do this? Its not working. So does that mean
PreparedStatements doesnot support IN clause of the
sqls. Help me out.
-RamIt will work, but you have to have: where TICKET_NUMBER IN (?,?,?). You'll have to build the last part dynamically based on the number of parameters that you have. Be carefull too, certain database implementations have a limit on the number items that you can include in the IN clause.
You'll also have to loop through and do your parameter sets.
Paul
Similar Messages
-
Can you see what's wrong with my sql clause?
Select afkogltri sum( afpowemng ) as yqty
from ( afpo inner join afko on afpoaufnr = afkoaufnr )
into ( d_gltri , d_wemng )
where afpo~matnr = wa_pir-matnr
and year( afko~gltri ) = year( sy-datum )
group by afko~gltri.
The above is my sql clause, when I do a syntax check, it said:"Comma without preceding colon (after SELECT ?)"
Can you tell me what's wrong with this sql clause?
Thank you very much!Hi,
Select Bgltri sum( Awemng ) <b>as yqty</b> (????)
into ( d_gltri , d_wemng )
from afpo as A inner join afko as B
on Aaufnr = Baufnr
where A~matnr = wa_pir-matnr
and year( B~gltri ) = year( sy-datum )
group by B~gltri.
ENDSELECT.
eg<b>:... INTO (f1, ..., fn</b>)
Places the result set in the target area (f1, ..., fn). The fields of the result set are transported to the target fields fi from left to right. INTO (f1, ..., fn) is allowed only if a list with n elements is also specified in the SELECT clause.
<b>If the result of a selection is a table, the data is retrieved in a processing loop introduced by SELECT and concluded by ENDSELECT. The processing passes through the loop once for each line read. If the result is a single record, the closing ENDSELECT is omitted.</b>
Example
Output a list of all airlines (with short description and name):
TABLES SCARR.
DATA: CARRID LIKE SCARR-CARRID,
CARRNAME LIKE SCARR-CARRNAME,
SELECT CARRID CARRNAME
INTO (CARRID, CARRNAME)
FROM SCARR.
WRITE: / CARRID, CARRNAME.
ENDSELECT
Thanks & Regards,
Judith. -
Variable reuse with different sql clauses
Hi There,
Is it possible to reuse the same variable with different sql queries in packages....
Example:
i have a variable say
1)variable name: filename
2)query in variable: select 'emp.txt' from dual
so using this variable name in data store, i am passing file name dynamically, but i need to change the file name emp.txt to dept.txt if emp.txt feed is missing.
One solution from my side is using one dump table having file name. any more without using db tables
please share views
Cheers,
SuryaHi Bhabani,
Thanks for your prompt reply, it was really helpful....
for suppose in i have feed name like dept.20110325, consider as sysdate.
so i need to pass feed name like above format...
As of my understanding from your reply, in third step we can give only string like 'emp1.txt', is not possible to write query like in assign mode: select 'dept'||to_char(sysdate,'yyyymmdd') from dual
Cheers,
Surya -
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 -
PreparedStatement with IN clause
Hi,
I have a question regarding using a PreparedStatement and a query
using an IN clause.
I need to pass an array of values to using an IN clause. How does the
binding work in this case since I am getting an SQLException - Invalid
column type ?
I need to pass an array of longs to this query.
The java.sql.Array does not have an implementation. How does this do
this ?Aswin Dinakar wrote:
>
Thanks a lot ! You really understood my problem without me describing it
properly.
I dont mind keeping it as a statement but that statement is being executed in
a FOR loop thousands of times and its a very complex SQL with lots of joins
and its taking up a lot of the CPU. Time constraint prevent me from changing
the business logic.I also suggest making a stored procedure to do the complex stuff. At least the
DBMS will only have to parse it once. The argument could even be a string
like "1,2,3,4,5,6", and the procedure could handle separating the values.
In a related issue do you know if the JMS database updates(deletes mostly) for
WLS 5.1 are PreparedStatement(s) ? When I query the v$sqlarea table for the
parse counts I see lots of JMS updates to the database.yes they are, but our MS SQLServer driver is inefficient about SQL with
PreparedStatements, sending fresh SQL to be parsed each execution. I suggest
your trying the MS driver from www.inetsoftware.de, which will do a better jod
than ours in this area.
Joe
>
Joseph Weinstein wrote:
A PreparedStatement only allows settable parameters representing
single values. You can't do:
stmt = c.prepareStatement("select * from foo where key in ?");
stmt.setString(1, "(1,2,3,4,5,6)");
Therefore, you need to know how many values in your In clause,
and generate a PreparedStatement like:
stmt = c.prepareStatement("select * from foo where key in (?,?,?,?,?...");
with a '?' for every value. Depending on whose driver your using, and
whether you can keep and re-use PreparedStatments, it might be better
to simply make the whole SQL query as a simple string and execute it:
String query = "select * from foo where key in (1,2,3,4,5,6)";
rs = stmt.executeQuery(query);
Aswin Dinakar wrote:
Hi,
I have a question regarding using a PreparedStatement and a query
using an IN clause.
I need to pass an array of values to using an IN clause. How does the
binding work in this case since I am getting an SQLException - Invalid
column type ?
I need to pass an array of longs to this query.
The java.sql.Array does not have an implementation. How does this do
this ? -
Can't use ";" in sql clause with Oracle 8.X
Can't use ";" in sql clause with Oracle 8.X
I can't use ";" at the ending of sql clause in VB program. First this program can use with Oracle 7.3.4 database. But now i need to upgrade DB to Oracle 8.1.7 ,program can't operate. It show error Runtime 40002
and 37000:ODBC driver for oracle/invalid charactor
ThankyouI've seen a lot of discussion about semicolons in SQL
sent from 3rd party applications. A web search should
bring up the discussions.
Also you might get more response if you ask this question
somewhere else. This is not a VB forum, so you may
not reach relevant people.
-- CJ -
Distinct SQL clause with Recordset object
Hi all, I was using a recordset with an sql distinct clause, on SAP B1 SP:0
Now we have updated to SP1, and it seems like recordset query doesnt works well with the distinct clause.
It returns all values.
Does anybody tried to use this clause with SP1?
Thanks.Hi,
The DISTINCT clause by itself is NOT working in recordsets. You have to programatically make sure that you have the distinct records. So, if you're adding distinct records to a combo box you can either check if it exists before you add it or you can add a try... catch block around it that just catches the error (without displaying anything) when you add to a combo box.
Hope it helps,
Adele -
Error with Oracle10G Sql Browser while execute package with exec clause
Dear Experts,
Please tell me why i am getting Error ORA- 00900 while executing this script with Oracle10G Sql Browserbut not getting error with Oracle9i Sql Browser
var r1 refcursor;
var r2 refcursor;
exec ETKT_CANCEL_TICKET_PCK.GET_DATA(:r1,:r2,'05052007/00000003/0000994','23');It would be interesting to know, what Sql Browser is.
-
We’re seeing the following issue: sql - Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause? - Stack Overflow (posted by a colleague of mine) and are curious to know if this behaviour is due to a difference between standard and enterprise, or could we doing something else wrong in our DB config.?
We have also reproduced the issue on the following stacks:
Oracle SE One 11.2.0.3 (with Spatial enabled)
Redhat Linux 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
11.2.0.3.0 Standard Edition and 11.2.0.4.0 Standard Edition (both with Spatial enabled)
Microsoft Windows Server 2003R2 Standard x64 Edition
However, the SQL works fine if we try it on Oracle 11.2.0.3.0 *Enterprise* Edition.
Any help or advice would be much appreciated.
Kindest Regards,
KevinIn my experience sdo_filter ALWAYS uses the spatial index, so that's not the problem. Since you did not provide the explain plans, we can't say for sure but I think yhu is right: Standard Edition can't use the bitmap operations, and thus it'll take longer to combine the results of the two queries (because the optimizer will surely split this OR up in two parts, then combine them).
BTW: when asking questions about queries here, it would be nice if you posted the queries here as well, so that we do not have to check another website in order to see what you are doing. Plus it will probably get you more answers, because not everyone can be bothered to click on that link. It would also have been nice if you had posted your own answer on the other post here as well, because my recommendation would have been to use union all - but since you already found that out for yourself my recommendation would have been a little late. -
Calculating values from row to row with pure sql?
Hello,
I'm searching for a way to calculate values from row to row with pure sql. I need to create an amortisation table. How should it work:
Known values at start: (they can be derived with an ordinary sql-statement)
- redemption amount RA
- number of payment terms NT
- annuity P (is constant in every month)
- interest rate IR
What has to be calculated:
First row:
RA1 = RA - P
Z1 = (RA1 * (IR/100/12))
T1 = P - Z1
2nd row
RA2 = RA1 - T1
Z2 = (RA2 * (IR/100/12))
T2 = P - Z2
and so on until NT has reached.
It should look like
NT
P
Tn
Zn
RAn
1
372,17
262,9
109,27
22224,83
2
372,17
264,19
107,98
21961,93
3
372,17
265,49
106,68
21697,74
4
372,17
266,8
105,38
21432,25
5
372,17
268,11
104,06
21165,45
6
372,17
269,43
102,75
20897,34
7
372,17
270,75
101,42
20627,91
8
372,17
272,09
100,09
20357,16
9
372,17
273,42
98,75
20085,07
10
372,17
274,77
97,41
19811,65
11
372,17
276,12
96,06
19536,88
12
372,17
277,48
94,7
19260,76
13
372,17
278,84
93,33
18983,28
14
372,17
280,21
91,96
18704,44
15
372,17
281,59
90,59
18424,23
16
372,17
282,97
89,2
18142,64
17
372,17
284,36
87,81
17859,67
18
372,17
285,76
86,41
17575,31
19
372,17
287,17
85,01
17289,55
20
372,17
288,58
83,59
17002,38
21
372,17
290
82,18
16713,8
22
372,17
291,42
80,75
16423,8
23
372,17
292,86
79,32
16132,38
24
372,17
294,3
77,88
15839,52
25
372,17
295,74
76,43
15545,22
26
372,17
297,2
74,98
15249,48
27
372,17
298,66
73,52
14952,28
28
372,17
300,13
72,05
14653,62
29
372,17
301,6
70,57
14353,49
30
372,17
303,09
69,09
14051,89
31
372,17
304,58
67,6
13748,8
32
372,17
306,07
66,1
13444,22
33
372,17
307,58
64,6
13138,15
34
372,17
309,09
63,08
12830,57
35
372,17
310,61
61,56
12521,48
36
372,17
312,14
60,04
12210,87
37
372,17
313,67
58,5
11898,73
38
372,17
315,21
56,96
11585,06
39
372,17
316,76
55,41
11269,85
40
372,17
318,32
53,85
10953,09
41
372,17
319,89
52,29
10634,77
42
372,17
321,46
50,71
10314,88
43
372,17
323,04
49,13
9993,42
44
372,17
324,63
47,55
9670,38
45
372,17
326,22
45,95
9345,75
46
372,17
327,83
44,35
9019,53
47
372,17
329,44
42,73
8691,7
48
372,17
331,06
41,11
8362,26
I would appreciate every help and idea to solve the problem solely with sql.
Thanks and regards
CarstenIt's using Model Clause and / or Recursive With (sometimes maybe both)
Regards
Etbin
with
rec_proc(nt,i,ra,p,ir,z,t) as
(select nt,i,ra - p,p,ir,round((ra - p) * 0.01 * ir / 12,2),p - round((ra - p) * 0.01 * ir / 12,2)
from (select 48 nt,22597 ra,372.17 p,5.9 ir,0 z,0 t,1 i
from dual
union all
select nt,i + 1,ra - t,p,ir,round((ra - t) * 0.01 * ir / 12,2),p - round((ra - t) * 0.01 * ir / 12,2)
from rec_proc
where i < nt
select * from rec_proc
try to adjust initial values and rounding please
NT
I
RA
P
IR
Z
T
48
1
22224.83
372.17
5.9
109.27
262.9
48
2
21961.93
372.17
5.9
107.98
264.19
48
3
21697.74
372.17
5.9
106.68
265.49
48
4
21432.25
372.17
5.9
105.38
266.79
48
5
21165.46
372.17
5.9
104.06
268.11
48
6
20897.35
372.17
5.9
102.75
269.42
48
7
20627.93
372.17
5.9
101.42
270.75
48
8
20357.18
372.17
5.9
100.09
272.08
48
9
20085.1
372.17
5.9
98.75
273.42
48
10
19811.68
372.17
5.9
97.41
274.76
48
11
19536.92
372.17
5.9
96.06
276.11
48
12
19260.81
372.17
5.9
94.7
277.47
48
13
18983.34
372.17
5.9
93.33
278.84
48
14
18704.5
372.17
5.9
91.96
280.21
48
15
18424.29
372.17
5.9
90.59
281.58
48
16
18142.71
372.17
5.9
89.2
282.97
48
17
17859.74
372.17
5.9
87.81
284.36
48
18
17575.38
372.17
5.9
86.41
285.76
48
19
17289.62
372.17
5.9
85.01
287.16
48
20
17002.46
372.17
5.9
83.6
288.57
48
21
16713.89
372.17
5.9
82.18
289.99
48
22
16423.9
372.17
5.9
80.75
291.42
48
23
16132.48
372.17
5.9
79.32
292.85
48
24
15839.63
372.17
5.9
77.88
294.29
48
25
15545.34
372.17
5.9
76.43
295.74
48
26
15249.6
372.17
5.9
74.98
297.19
48
27
14952.41
372.17
5.9
73.52
298.65
48
28
14653.76
372.17
5.9
72.05
300.12
48
29
14353.64
372.17
5.9
70.57
301.6
48
30 -
How to escape a single quotes from a string of dynamic sql clause?
if a single quotes exist in a dynamic sql clause for a string,
like
v_string :='select tname from tab where tabtype='table'',
there tabtype='table' will conflict with the single quote ahead.
could somebody tell me how to escape this single quotes?
thanks for your tips,
frederickfredrick,
To represent one single quotation mark within a literal, enter two single quotation marks. For example :
v_string :='select tname from tab where tabtype=''table'''
Regards,
Srinivas -
What's wrong with this SQL?
what's wrong with this SQL?
Posted: Jan 16, 2007 9:35 AM Reply
Hi, everyone:
when I insert into table, i use the fellowing SQL:
INSERT INTO xhealthcall_script_data
(XHC_CALL_ENDED, XHC_SWITCH_PORT, XHC_SCRIPT_ID, XHC_FAX_SPECIFIED)
VALUES (SELECT TO_DATE(HH_END_DATE||' '||HH_END_TIME,'MM/DD/YY HH24:MI:SS'), HH_SWITCHPORT, HH_SCRIPT,'N'
FROM tmp_healthhit_load WHERE HH_SCRIPT !='BROCHURE' UNION
SELECT TO_DATE(HH_END_DATE||' '||HH_END_TIME,'MM/DD/YY HH24:MI:SS'), HH_SWITCHPORT, HH_SCRIPT,'N' FROM tmp_healthhit_load WHERE HH_SCRIPT !='BROCHURE');
I always got an error like;
VALUES (SELECT TO_DATE(HH_END_DATE||' '||HH_END_TIME,'MM/DD/YY HH24:MI:SS'), HH_SWITCHPORT,
ERROR at line 3:
ORA-00936: missing expression
but I can't find anything wrong, who can tell me why?
thank you so much in advance
mpowel01
Posts: 1,516
Registered: 12/7/98
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 9:38 AM in response to: jerrygreat Reply
For starters, an insert select does not have a values clause.
HTH -- Mark D Powell --
PP
Posts: 41
From: q
Registered: 8/10/06
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 9:48 AM in response to: mpowel01 Reply
Even I see "missing VALUES" as the only error
Eric H
Posts: 2,822
Registered: 10/15/98
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 9:54 AM in response to: jerrygreat Reply
...and why are you doing a UNION on the exact same two queries?
(SELECT TO_DATE(HH_END_DATE||' '||HH_END_TIME,'MM/DD/YY HH24:MI:SS') ,HH_SWITCHPORT ,HH_SCRIPT ,'N' FROM tmp_healthhit_load WHERE HH_SCRIPT !='BROCHURE' UNION SELECT TO_DATE(HH_END_DATE||' '||HH_END_TIME,'MM/DD/YY HH24:MI:SS') ,HH_SWITCHPORT ,HH_SCRIPT ,'N' FROM tmp_healthhit_load WHERE HH_SCRIPT !='BROCHURE');
jerrygreat
Posts: 8
Registered: 1/3/07
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 9:55 AM in response to: mpowel01 Reply
Hi,
thank you for your answer, but the problem is, if I deleted "values" as you pointed out, and then execute it again, I got error like "ERROR at line 3:
ORA-03113: end-of-file on communication channel", and I was then disconnected with server, I have to relogin SQLplus, and do everything from beganing.
so what 's wrong caused disconnection, I can't find any triggers related. it is so wired?
I wonder if anyone can help me about this.
thank you very much
jerry
yingkuan
Posts: 1,801
From: San Jose, CA
Registered: 10/8/98
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 9:59 AM in response to: jerrygreat Reply
Dup Post
jerrygreat
Posts: 8
Registered: 1/3/07
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 10:00 AM in response to: Eric H Reply
Hi,
acturlly what I do is debugging a previous developer's scipt for data loading, this script was called by Cron work, but it never can be successfully executed.
I think he use union for eliminating duplications of rows, I just guess.
thank you
jerry
mpowel01
Posts: 1,516
Registered: 12/7/98
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 10:03 AM in response to: yingkuan Reply
Scratch the VALUES keyword then make sure that the select list matches the column list in number and type.
1 insert into marktest
2 (fld1, fld2, fld3, fld4, fld5)
3* select * from marktest
UT1 > /
16 rows created.
HTH -- Mark D Powell --
Jagan
Posts: 41
From: Hyderabad
Registered: 7/21/06
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 10:07 AM in response to: jerrygreat Reply
try this - just paste the code and give me the error- i mean past the entire error as it is if error occurs
INSERT INTO xhealthcall_script_data
(xhc_call_ended, xhc_switch_port, xhc_script_id,
xhc_fax_specified)
SELECT TO_DATE (hh_end_date || ' ' || hh_end_time, 'MM/DD/YY HH24:MI:SS'),
hh_switchport, hh_script, 'N'
FROM tmp_healthhit_load
WHERE hh_script != 'BROCHURE'
UNION
SELECT TO_DATE (hh_end_date || ' ' || hh_end_time, 'MM/DD/YY HH24:MI:SS'),
hh_switchport, hh_script, 'N'
FROM tmp_healthhit_load
WHERE hh_script != 'BROCHURE';
Regards
Jagan
jerrygreat
Posts: 8
Registered: 1/3/07
Re: what's wrong with this SQL?
Posted: Jan 16, 2007 11:31 AM in response to: Jagan Reply
Hi, Jagan:
thank you very much for your answer.
but when I execute it, I still can get error like:
ERROR at line 1:
ORA-03113: end-of-file on communication channel
so wired, do you have any ideas?
thank you very muchAnd this one,
Aother question about SQL?
I thought I already told him to deal with
ORA-03113: end-of-file on communication channel
problem first.
There's nothing wrong (syntax wise) with the query. (of course when no "value" in the insert) -
Hi
If I run PL/SQL block
DECLARE
CURSOR C1 is SELECT CLM_CASE_NO FROM CLAIM_OBJECT.CLM_INVLVD_PRTY_T where CLM_CASE_NO=XXXX;
BEGIN
FOR X in C1 loop
INSERT INTO POSTL_ADDRS_ARCHIVE P (SELECT A.* FROM CLAIM_OBJECT.POSTL_ADDRS A, CLAIM_OBJECT.CLM_INVLVD_PRTY_T C WHERE
C.CLNT_NO = A.CLNT_NO AND C.CURR_ROW_IND='A' AND C.CLM_CASE_NO =X.CLM_CASE_NO );
end loop;
end;
there is no error with the above block
If I remove where clause in cursor and run block
DECLARE
CURSOR C1 is SELECT CLM_CASE_NO FROM CLAIM_OBJECT.CLM_INVLVD_PRTY_T;
BEGIN
FOR X in C1 loop
INSERT INTO POSTL_ADDRS_ARCHIVE P (SELECT A.* FROM CLAIM_OBJECT.POSTL_ADDRS A, CLAIM_OBJECT.CLM_INVLVD_PRTY_T C WHERE
C.CLNT_NO = A.CLNT_NO AND C.CURR_ROW_IND='A' AND C.CLM_CASE_NO =X.CLM_CASE_NO );
end loop;
end;
ERROR at line 1:
ORA-01013: user requested cancel of current operation
ORA-06512: at line 12
I searched for ORA-06512
Cause:
This error message indicates the line number in the PLSQL code that the error resulted.
SELECT CLM_CASE_NO FROM CLAIM_OBJECT.CLM_INVLVD_PRTY_T has over 800,672 records.
SELECT CLM_CASE_NO FROM CLAIM_OBJECT.CLM_INVLVD_PRTY_T where CLM_CASE_NO=XXXX; has 2 records.
I am not not understanding why block 2 is throwing error (with no where clause in cursor)
Any help will be greatly appreciated
Thanks in advanceAs the error message indicates clearly the process was cancelled as you pressed CTRL+C. And yes you can’t see any data you insert in one session from other session until it gets committed. And as others have mentioned row by row operation is very expensive think about revising your approach.
Instead of having a cursor why don’t you join it directly in you select in the insert statement and try?
Thanks,
Karthick.
Message was edited by:
karthick_arp -
How to create a procedure to output REF CURSOR with any WHERE clause?
I have an requirement like this: I have huge query which need to reuse in my code more than 10 times. This SQL has about 50 lines. Thing is for those 10 odd times sometimes the WHERE clause changes (columns are the same). So I cannot create a view since SQL is not static.
I thought of writing a procedure with a WHERE_CLAUSE input para. I output a sys refcursor by adding the where clause. But I can't do it since you cannot add a where clause like that.
i.e.
PROCEDURE dynamyic_query (p_where_clause IN VARCHAR2, p_out_query OUT SYS_REFCURSOR ) IS
BEGIN
OPEN p_out_query FOR SELECT ......... FROM table WHERE || ' ' || p_where_clause;
END;The above gives error.
How to handle a situation like this???? Any help would be greatly appreciated.I tried this method:
I created a table tab_test which has these records:
TNAME TABTYPE CLUSTERID
ABS_V4_P_ERROR_MESSAGES TABLE
ABS_V4_P_ORG_PARAM TABLE
ABS_V4_P_PARAMETER TABLE
ABS_V4_P_SYS_PARAM TABLE
ACCINTERFACE_PARAMETERS TABLE
ACCOUNTS TABLE
ACCOUNT_EXTRACT_PERIODS TABLE
ACCOUNT_EXTRACT_PERIODS# TABLE
ACCOUNT_EXTRACT_PERIODS_1 TABLE Now I create this proc:
PROCEDURE FORMS_TEXT_DYN_SQL_TEST(p_where_cluase IN VARCHAR2, p_out_cursor OUT SYS_REFCURSOR) IS
v_stmt VARCHAR2(1000);
BEGIN
v_stmt := 'SELECT tname FROM tab_test WHERE tname LIKE ''%ABS_V4%'' AND tabtype = :x';
OPEN p_out_cursor FOR v_stmt using p_where_cluase;
END;I create this code block and run it:
declare
v_tname varchar2(200);
out_cursor sys_refcursor;
begin
forms_text_dyn_sql_test('TABLE', out_cursor );
LOOP
fetch out_cursor INTO v_tname;
exit when out_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_tname);
END LOOP;
end;
/I get correct output:
ABS_V4_P_ERROR_MESSAGES
ABS_V4_P_ORG_PARAM
ABS_V4_P_PARAMETER
ABS_V4_P_SYS_PARAMHowever, when I change the proc like this:
PROCEDURE FORMS_TEXT_DYN_SQL_TEST(p_where_cluase IN VARCHAR2, p_out_cursor OUT SYS_REFCURSOR) IS
v_stmt VARCHAR2(1000);
BEGIN
v_stmt := 'SELECT tname FROM tab_test WHERE tname LIKE ''%ABS_V4%'' AND :y';
OPEN p_out_cursor FOR v_stmt using p_where_cluase;
END;And run this code block:
declare
v_tname varchar2(200);
out_cursor sys_refcursor;
begin
forms_text_dyn_sql_test(' 1 = 1 ', out_cursor );
LOOP
fetch out_cursor INTO v_tname;
exit when out_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_tname);
END LOOP;
end;
/I get error:
[1]: (Error): ORA-00920: invalid relational operator ORA-06512: at "ABS.FORMS_TEXT_DYN_SQL_TEST", line 6 ORA-06512: at line 5Looks like you can only put column_name = :z, column_name = :y type values. You cannot it seems replace it with any WHERE CLAUSE???? -
"create columns with a where clause" in BMM
Hi All,
I have a question about OBI EE Meta data layer.
We have OBIEE sitting on a Data Warehouse with a star schema.
Our Fact table holds the following fields...
EmployeeID
CompanyID
Measure ID
Measure Name
MEASURE
This is what we have in the physical layer, BMM layer and the presentation layer but I want to be able to "create columns with a where clause"
So my fact table in the presentation layer would look like this
Amount Sold
Unit Cost
Company Amount
I thought I could just create a logical column with
Amount Sold = Measure
where Measure Name = "Amount Sold"
But I can't seem to find any to do that.
Any ideas?
ThanksOr you simply map your measure in the Logical Table source as something like :
CASE WHEN MEASURE_NAME = 'Amount Sold' THEN MEASURE ELSE 0 END.
You need to decide if you want the where clause adding in the Logical table source (be careful you will need a seperate LTS for each measure, this will mean more than one SQL being fired when you have more than one measure in the report).
Or you go with this case method on each measure, be able to have all the measures mapped in 1 LTS, include all those in the report and they will be retrieved by one SQL block.
Maybe you are looking for
-
Photos on iPad and iPhone that i can't find on iPhoto...
Photos on iPad and iPhone that i can't find on iPhoto...
-
Adobe After Effects or Premire Pro?
I'm looking to do a little bit of video editing / creation, and I'm not sure which to go for. I come from a mostly musical background, but as I do some film scoring and such I'd like something more sophisticated than iMovie or Quicktime to cut togeth
-
Good morning, I'm experiencing the following issue when installing Microsoft SQL Server Express 2012 (with tools, SQLEXPRWT_x86_ENU.exe) on the laptop of my company; Installation goes plain until around the end of the progress bar, it stops on the se
-
SQL Question containing '*'
When I send the SQL string: "SELECT * FROM db WHERE test like 'VERSION*';" to a database I cn't get an answere. But when I write it all out like this: "SELECT * FROM db WHERE test like 'VERSION589';" I get an answere. Why is this? What can I do to wr
-
Incorrect version number and installation date of Firefox after upgrading
My home desktop PC equipped with Mozilla Firefox v4.0 has recently been upgraded to v4.0.1 through an automatic updating. However, as noted from Windows 7 "Programs and Features", the latest version number and its installation date are not correctly