3.2, BC4J, outer joins, insert, lookup, bug
I have a table voyage that has a foreign key to routes. This relation is not mandatory.
I created a frame that shows the voyage. I use an outer join to show the route name if there is a route
SELECT voyage.ID
,voyage.Name
, voyage.routeID
, route.ID
, route.Name
WHERE voyage.routeID = route.ID(+)
FROM voyage, route
This works fine for selecting rows. But when I insert a new voyage and try to commit it, I get an error message that route.ID is not allowed to be NULL.
Any suggestions?
TIA
Hello Folks!
I would like to bring this topic up again!
We have problems using view objects with outer joins, too.
In JDev 3.1 we finally managed to handle things a bit. All worked fine except of deleting a record! No chance here!
So we prayed for better behaviour in JDev 3.2.2. But as it seems it's getting even worse. I just checked our application.
Here are the results:
- In the Business Component Tester everything works fine. No errors.
- As generated business component data form in applet I can't insert a record. The joke is that deleting now is possible!!! The error I get is:
"AttributeInfo: cannot insert null into..". When I remove all AttributeInfos named by the error messages all works fine. But that's no solution cause we need these information!
thanks for any help on this.
null
Similar Messages
-
Problem with outer join/insert
I created a test case in scott schema that describes my problem. I use emp table, and I want to have one more table - emp_info - that will store some additional info about employees. Not every employee will have additional info. I can't add a field to emp table - this has to be in an additional table.
I want to display all the emp's in a swing table, and an info if it exists - of course, using outer join. Further more, I want users to be able to enter info in this same table. If info already exists in the emp_info it will be updated, if not a new record is created.
I hope you get the picture.
So, emp_info table is:
create table emp_info(empno number(4), info varchar2(10))
ALTER TABLE "SCOTT"."EMP_INFO"
ADD (CONSTRAINT "PK_EMP_INFO" PRIMARY KEY("EMPNO"))
ALTER TABLE "SCOTT"."EMP_INFO"
ADD (CONSTRAINT "FK_EMP_INFO_EMP" FOREIGN KEY("EMPNO")
REFERENCES "SCOTT"."EMP"("EMPNO"))
In Jdev I create entitiy objects for emp and emp_info, and create View object 'ViewOuter' using these two entities. emp is updatable and empinfo is updatable and reference.
SQL query for the view object is:
SELECT Emp.EMPNO, Emp.ENAME, Emp.JOB, Emp.MGR, Emp.HIREDATE,
Emp.SAL, Emp.COMM, Emp.DEPTNO, EmpInfo.EMPNO AS EMPNO1,
EmpInfo.INFO
FROM EMP Emp, EMP_INFO EmpInfo
WHERE Emp.EMPNO = EmpInfo.EMPNO(+)
I changed View row class of the ViewOuter view:
public void setInfo(String value) {
if (getEmpno1()==null) {
setEmpno1(getEmpno());
setAttributeInternal(INFO, value);
Now I create the table in swing. It works fine - if a user changes info, new record is created or existing updated etc. There is only one problem:
If I change info on an employee, and then requery the view without commiting to the database, I don't see this info. If I try to change it, I get error
(oracle.jbo.TooManyObjectsException) JBO-25013: Too many objects match the primary key oracle.jbo.Key[7499 ].
It seams that the new info is cached, but requerying the view didn't pick it up. And when it creates new row for info PK is violated.
How can I avoid this?I set up the primari key for emp_info like this:
public void setInfo(String value) {
if (getEmpno1()==null) {
setEmpno1(getEmpno());
setAttributeInternal(INFO, value);
It's set when the user enters info.
What is the difference between transaction.commit and transaction.postChanges?
Posting changes looks like good temp solution. How can I change view object, so it calls postchanges before executing query? Since I can do requery on multiple places in application, this should be handled by the view itself.
Is there any better way? -
Full outer join Bug or my misunderstanding?
CREATE GLOBAL TEMPORARY TABLE BP_ATTRIBUTE_CHARVAL_GTT
( "ATTRIBUTE_ID" NUMBER(10,0),
"PARTNER_ID" NUMBER(10,0),
"CHAR_VALUE" VARCHAR2(4000 BYTE),
"LAST_UPDATE_DATE" DATE,
"DISABLE_DATE" DATE
) ON COMMIT DEETE ROWS ;
CREATE TABLE BP_ATTRIBUTE_CHARVAL
( "ATTRIBUTE_ID" NUMBER(10,0),
"PARTNER_ID" NUMBER(10,0),
"CHAR_VALUE" VARCHAR2(4000 BYTE),
"LAST_UPDATE_DATE" DATE,
"DISABLE_DATE" DATE
REM INSERTING into BP_ATTRIBUTE_CHARVAL
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (888854,710326,'1',to_date('29-NOV-06','DD-MON-RR'),to_date('01-JAN-06','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591330,710326,'01',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591321,710326,'N',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591331,710326,'00',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591329,710326,'01',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591332,710326,'01',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591324,710326,'2',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591333,710326,'01',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591323,710326,'X1',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591334,710326,'BS',to_date('09-FEB-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
REM INSERTING into BP_ATTRIBUTE_CHARVAL_GTT
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591330,707408,'01',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591321,707408,'N',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591331,707408,'00',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591329,707408,'01',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591332,707408,'00',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591324,707408,'2',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591333,707408,'01',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591323,707408,'X1',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (591334,707408,'BS',to_date('23-JAN-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (876570,707408,'01',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT (ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (876568,707408,'1234560003264801',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (876569,707408,'f3a1d996-720e-4e0a-989c-6d4f3e8e629a',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
Insert into BP_ATTRIBUTE_CHARVAL_GTT(ATTRIBUTE_ID,PARTNER_ID,CHAR_VALUE,LAST_UPDATE_DATE,DISABLE_DATE) values (874948,707408,'20060318000000',to_date('29-MAR-06','DD-MON-RR'),to_date('07-NOV-01','DD-MON-RR'));
select 707408,
decode(g.attribute_id,NULL,c.attribute_id,g.attribute_id) attribute_id,
case
when c.last_update_date is null and g.last_update_date is not null
then
g.char_value
when g.last_update_date is null and c.last_update_date is not null
then
c.char_value
when g.last_update_date >= c.last_update_date
then
g.char_value
else
c.char_value
end char_value,
decode(g.last_update_date,c.last_update_date,g.last_update_date,c.last_update_date) last_update_date,
decode(g.disable_date,c.disable_date,g.disable_date,c.disable_date) disable_date
from bp_attribute_charval_gtt g
full outer join
bp_attribute_charval c
on c.attribute_id = g.attribute_id
where c.partner_id=710326;Hi Guys
When I run the above query I get a problem.
I am expecting to see is a merge of all the attribute_id's and their values.
The query does not appear to be merging the data as intended.
My understanding of the full outer join is that its a combination of left and outer joins,
so the above query is intended to return with the total number of unique attributes
and their appropriate values
a) I have a bug in the Sql
b) This is an oracle bug
c) My understanding is incorrect
Please Help
Message was edited by:
Keith Jamieson (fixed insert statements for gtt )How do you expect a full outer join operation when you have given --
where c.partner_id=710326;According to your supplied data - i don't think your query can perform that full outer join operation because of that filtration. Just remove that last condition and checked it. You will get your desired result - hopefully.
"It's like you want to view the things by closing down your both eyes". Do you think it will pay?
Regards.
Satyaki De. -
Key-lookup on SCD II does not generate complete outer join
Using OWB 10.2.0.3
In a mapping to populate a fact table, I have to join two source tables (inner join). After that I have to perform a number of lookups on dimension objects to retrieve the dimension keys I want to store in my fact table. These dimensions are all SCD type II. All lookups are performed on the detail level of each dimension.
In the generated code, the join condition is an outer join. However, the condition that OWB generates to determine the correct level of the dimension is an inner join:
SELECT
FROM
"TMI_CELLEN_ACT" "TMI_CELLEN_ACT",
"DIM_TMI_BESTEMMINGEN" "KL_DIM_TMI_BESTEMMINGEN"
WHERE
( "KL_DIM_TMI_BESTEMMINGEN"."BEST_CODE" (+) = "TMI_CELLEN_ACT"."BESTEMMINGSCODE" ) AND
( ( "KL_DIM_TMI_BESTEMMINGEN"."BEST_ID" IS NULL ) OR
( "KL_DIM_TMI_BESTEMMINGEN"."BEST_ID" = "KL_DIM_TMI_BESTEMMINGEN"."DIMENSION_KEY" ) ) AND
( ( "KL_DIM_TMI_BESTEMMINGEN"."EFFECTIVE_DATE" IS NULL ) OR
( ( "KL_DIM_TMI_BESTEMMINGEN"."EXPIRATION_DATE" IS NOT NULL ) AND
( TO_DATE ( trunc(sysdate) ) >= "KL_DIM_TMI_BESTEMMINGEN"."EFFECTIVE_DATE" ) AND
( TO_DATE ( trunc(sysdate) ) <= "KL_DIM_TMI_BESTEMMINGEN"."EXPIRATION_DATE" ) ) OR
( ( "KL_DIM_TMI_BESTEMMINGEN"."EXPIRATION_DATE" IS NULL ) AND
( TO_DATE ( trunc(sysdate) ) >= "KL_DIM_TMI_BESTEMMINGEN"."EFFECTIVE_DATE" ) ) )
In my case, this results in an empty data set.
When using ANSI sql, the 'level-conditions' are generated as a WHERE-clause, which also results in an empty data set. When this code is included in the LEFT OUTER JOIN clause, all my data is there.
What is going on here?
Thanks
PaulThe "clever" workaround is to use a joiner, which is the way we implement the key lookup. So simply use that.
To just explain why we limit the key-lookup. The main reason is that this operator is cardinality neutral. That means we always expect it to return one and only one row. If we give you too much flexibility we increase the risk of getting more than one row back which would break the logic for the mapping.
Hope this makes sense, but just go with the joiner.
Thanks,
Jean-Pierre -
Has anybody noticed there is a huge bug in Oracle 9.2.0.1 ?
SELECT STRS.Text, STRS.Language
FROM CTY LEFT OUTER JOIN STRS
ON (STRS.Language='de' AND CTY.LanguageId=STRS.Num)
returns:
1 , 'Deutsch' , 'de'
2 , 'Deutsch' , 'de'
BUT if the condition is replaced by
ON ('de'=STRS.Language AND CTY.LanguageId=STRS.Num)
it returns:
1 , 'nìmecky' , 'cs'
2 , 'nìmecky' , 'cs'
That means the condition "'de'=STRS.Language" is effectively ignored !!I don't think that's a bug.
STRS.Language='de' is a where-condition and not a join-condition.
Try:
SELECT STRS.Text, STRS.Language
FROM CTY LEFT OUTER JOIN STRS
ON ( AND CTY.LanguageId=STRS.Num)
WHERE STRS.Language='de'; -
Left outer join Bug? Oracle 11 g.
Hi , I am facing a strange problem in oracle 11 g .
I have a select query like this
Query 1 :
Select A.name, B.name, C.name from A Left outer join B on A.id = B.id left outer join C on b.id = c.id and (Some complex condition) left outer join D on C.id = D.id;
A, B, C, D are tables.
(Assume that I have data which satisfies the above join conditions)
However I am not getting C.name in the result. Getting NULL in C.name.
Now if I add a where clause to the above query like the following Query 2 then I get C.name in the results
Consider that there is a field called field1 in table C and the value of field1 is ‘xyz’ for all the rows of table C .
Query 2 :
Select A.name, B.name, C.name from A Left outer join B on A.id = B.id left outer join C on b.id = c.id and (Some complex condition) left outer join D on C.id = D.id where c.field1 = ‘xyz’;
I find this strange , What role where clause is playing ? Why I get C.name only after adding where clause.
I also tried following setting with Query 1 however this also did not help me.
alter session set "_optimizer_join_elimination_enabled"=false;
Is oracle does some optimization if no where clause is specified ? Is this a bug?
Please help me out.
Thanks,
Sumit874384 wrote:
...Is this a bug? Maybe. Maybe not. Really difficult to say based on your description. However, if you suspect a bug, then raise a ticket to the support including much more information (e.g. version 11.x.x.x, define "some condition" and so on).
Nicolas. -
Strange bug with Full Outer Join
Hi guys,
can you please confirm this behaviour on 11gR2? It used to work fine on 10gR1.
Small test case:
create table TEST_OBJECT_METADATA
project_name VARCHAR2(30 CHAR) not null,
object_id NUMBER not null
create table TEST_OBJECT_INFO
object_id NUMBER not null,
object_type VARCHAR2(30) not null
create table TEST_SUPPORTED_OBJECTS
object_type VARCHAR2(30 CHAR) not null,
enabled NUMBER(1));
INSERT INTO TEST_OBJECT_METADATA VALUES ('NEW',1);
INSERT INTO TEST_OBJECT_INFO VALUES (1, 'TABLE');
INSERT INTO TEST_SUPPORTED_OBJECTS VALUES ('TABLE',1);
COMMIT;When I execute the following query:
WITH old_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'OLD'),
new_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'NEW')
SELECT src.object_type,
t.enabled
FROM (SELECT nvl(o.object_type, n.object_type) object_type
FROM old_project o
FULL OUTER JOIN new_project n
ON o.object_id = n.object_id) src,
test_supported_objects t
WHERE src.object_type = t.object_type(+);I get the following output:
OBJECT_TYPE ENABLED
TABLE So, the outer join to test_supported_objects does not match.
But if I force the FULL OUTER JOIN to run first using rownum:
WITH old_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'OLD'),
new_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'NEW')
SELECT src.object_type,
t.enabled
FROM (SELECT nvl(o.object_type, n.object_type) object_type,
rownum
FROM old_project o
FULL OUTER JOIN new_project n
ON o.object_id = n.object_id) src,
test_supported_objects t
WHERE src.object_type = t.object_type(+);I get the expected output:
OBJECT_TYPE ENABLED
TABLE 1 Thanks in advance.Without mixing works fine:
WITH old_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'OLD'),
new_project AS
(SELECT oi.object_type,
oi.object_id
FROM test_object_metadata om,
test_object_info oi
WHERE om.object_id = oi.object_id
AND project_name = 'NEW')
SELECT src.object_type,
t.enabled
FROM (SELECT nvl(o.object_type, n.object_type) object_type
FROM old_project o,
new_project n
where o.object_id = n.object_id(+)
UNION
SELECT nvl(o.object_type, n.object_type) object_type
FROM old_project o,
new_project n
where o.object_id(+) = n.object_id) src,
test_supported_objects t
WHERE src.object_type = t.object_type(+);but there shouldn't be any restrictions on mixing them, right? -
Issue with Outer Join (Possible Bug)
Hi,
I am using Toplink 10.3.3 with oracle as db. I noticed that if I use outer joins with collections, then toplink doesnt add (+) sign to the where clause of the collection.
For e.g. for a relationship - Employee has projects, if I do an outer join on projects and also provide a where clause for projects collection, the query doesnt include the (+) sign in it.
Expression expr = builder.anyOfAllowingNone("projects").getAllowingNull("anotherOne-OneMapping").get("attr").equal("Value")
This expr goes in the where clause and TopLink does not generate (+) in the query alongside attr = "Value"
I have tried this from workbench as well as Java. Could anyone please confirm that the above scenario works? May be this is a bug in toplink !
TIA
AniI too have found a few bugs with full outer joins. Many of them have been fixed in 9iR2 though.
Like this one simple one on unpatched 9iR1: select foo1.x, foo2.x
from foo1 full outer join (select * from foo2 where x = :bindx) foo2 on (foo1.y = foo2.y)
ERROR at line 2:
ORA-00600: internal error code, arguments: [qctcte1], 0], [], [], [], [], [], []Fixed here: Hdr: 2458655 9.0.1.3.0 RDBMS 9.0.1.3.0 SQL LANGUAGE PRODID-5 PORTID-453
Abstract: ORA-600 [QCTECTE1] ON QUERY WITH FULL OUTER JOIN AND BIND VARIABLES -
Datawindow graphical syntax outer join BUG
Ok, so this is a bug report. I don't know where i'm supposed to post it for SAP (i do have support).
The outer join syntax is ansi.
Using the graphical SQL designer, outer joins are incorrectly written by powerbuilder. This has been going on ever since ANSI style outer join sytax was added (PB 9?).
I think it has to do with the datawindow's use of both right and outer joins and its lack of use of inner joins. The end result is that we have to rewrite a lot of stuff in sql since powerbuilder is generating bad sql.
The typical example is the use of 2 or more outer joins where the joins are being done using 2 or more columns.
PB will create both a LEFT and a RIGHT outer join by duplicating the table name. The table (receive) is only selected ONCE in the sql graphical designer.
And this is the result:
Microsoft SQL Native Client
The objects "receive" and "receive" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
Do you want to correct errors?
I would love to see the datawindow sql corrected and written in a more standard way.
1 change the OUTER JOIN syntax in the db profile setup to indicate the syntax. not outer join, but syntax. If you select ANSI have it write ALL joins using JOIN ( from ta join tb on ta.col = tb.col) intead of from tablea, tableb where tablea.col = tableb.col
2 - eliminate the use of right outer joins.
At that point i believe that the datawindow could more easily be fixed by SAP to not duplicate tables when in generates the syntax.If you have an Oracle Support agreement you can log a Service Request with Oracle, but they may respond that it is not really a bug. The problem is that the "outer" keyword in your 3rd example is being treated as an alias for TABLE_A because it is not considered a reserved keyword.
with table_a as (
select 1 as id, 'abc' as value_a from dual union all
select 2 as id, 'def' as value_a from dual union all
select 3 as id, 'ghi' as value_a from dual
, table_b as (
select 2 as id, 'jkl' as value_b from dual union all
select 3 as id, 'mno' as value_b from dual union all
select 4 as id, 'pqr' as value_b from dual
select ID, outer.VALUE_A, VALUE_B from TABLE_A outer join TABLE_B using (ID);
ID VALUE_A VALUE_B
2 def jkl
3 ghi mnoIf you query the V$RESERVED_WORDS view it will tell you which keywords are reserved.
select * from V$RESERVED_WORDS where keyword in ('OUTER', 'SELECT','USING');
KEYWORD LENGTH RESERVED RES_TYPE RES_ATTR RES_SEMI DUPLICATE
USING 5 N N N N N
OUTER 5 N N N N N
SELECT 6 Y N N N NYou would get a similar result if you tried
select ID, VALUE_A, VALUE_B from TABLE_A using join TABLE_B using (ID);Regards,
Bob -
Full outer join --- bug? Urgent
Hi,
I have a simple mapping using 2 source tables and doing an full outer join. While executing the mapping it is throwing me out with an error --
Starting Execution LOAD_SAP
Starting Task LOAD_SAP
ORA-01790: expression must have same datatype as corresponding expression
ORA-02063: preceding line from ODSD@LOC_TGT_LOC_ODSD
ORA-06512: at "DWH_USER.LOAD_SAP", line 12
ORA-06512: at "DWH_USER.LOAD_SAP", line 481
ORA-06512: at "DWH_USER.LOAD_SAP", line 795
ORA-06512: at "DWH_USER.LOAD_SAP", line 1973
ORA-06512: at line 1
Completing Task LOAD_SAP
Completing Execution LOAD_SAP
The SQL generated at line 12 is -
CURSOR "JOIN_c" IS
SELECT
/*+ DRIVING_SITE("CONNECTION_LOC_TGT_LOC_ODSD") */
"CONNECTION_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID" "END_USER_CUST_ID",
"SERVICE_LOC_TGT_LOC_ODSD"."SERVICE_NAME" "SERVICE_NAME",
"CONNECTION_LOC_TGT_LOC_ODSD"."CE_CLLI" "CE_CLLI",
"CONNECTION_LOC_TGT_LOC_ODSD"."PE_CLLI" "PE_CLLI"
FROM "ODS"."CONNECTION"@"ODSD"@"LOC_TGT_LOC_ODSD" "CONNECTION_LOC_TGT_LOC_ODSD"
FULL OUTER JOIN "ODS"."SERVICE"@"ODSD"@"LOC_TGT_LOC_ODSD" "SERVICE_LOC_TGT_LOC_ODSD" ON ("CONNECTION_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID" = "SERVICE_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID") ;
If I replace the Full outer join with an equi join everything works fine. The SQL generated with an equi-join is ---
SELECT
/*+ DRIVING_SITE("CONNECTION_LOC_TGT_LOC_ODSD") */
"CONNECTION_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID" "END_USER_CUST_ID",
"SERVICE_LOC_TGT_LOC_ODSD"."SERVICE_NAME" "SERVICE_NAME",
"CONNECTION_LOC_TGT_LOC_ODSD"."CE_CLLI" "CE_CLLI",
"CONNECTION_LOC_TGT_LOC_ODSD"."PE_CLLI" "PE_CLLI"
FROM "ODS"."CONNECTION"@"ODSD"@"LOC_TGT_LOC_ODSD" "CONNECTION_LOC_TGT_LOC_ODSD",
"ODS"."SERVICE"@"ODSD"@"LOC_TGT_LOC_ODSD" "SERVICE_LOC_TGT_LOC_ODSD" WHERE ( "CONNECTION_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID" = "SERVICE_LOC_TGT_LOC_ODSD"."END_USER_CUST_ID" );
We are using Oracle 9.2.0.4 AND OWB Clinet 9.2.0.2.8 and runtime repository 9.2.0.2.0.
Any help on this appreciated?The discussion on this thread has moved to the later thread Problem with JOINs
Nikolai -
Query builder bug in outer joins ?
I understood that if you were joining two tables A and B, the following was a
LEFT OUTER JOIN
SELECT A.COL, B.COL
FROM A, B
WHERE A.ID = B.ID (+)
ie: a LEFT outer join has the (+) on the Right-hand table.
However, query builder puts the (+) on the Left-hand table.
Same for a RIGHT outer join - I think the (+) should be on the Left-hand table, but query builder puts it on the Right-hand table.
Cheers,
Andrew
(running Version 2.1.0.00.39)Hi Andrew,
I just played a little with the query builder and created a join between two of my tables:
PROJECTS and ACTIVITIES, linked via KCC.
When I create a left outer join in query builder, I get the following result:
select "PROJECTS"."KCC" as "KCC"
from "ACTIVITIES" "ACTIVITIES",
"PROJECTS" "PROJECTS"
where "PROJECTS"."KCC"(+) ="ACTIVITIES"."KCC"
Which is correct: Left refers to the first table in the from clause (ACTIVITIES) and places the (+) on the other table!
Left and right refers to the order of tables in the from clause, not in the where clause. Query builder sorts the tables in FROM alphabetically, maybe this is differing from the graphical order in query builder.
Regards
Alex -
Problem with XMLTABLE and LEFT OUTER JOIN
Hi all.
I have one problem with XMLTABLE and LEFT OUTER JOIN, in 11g it returns correct result but in 10g it doesn't, it is trated as INNER JOIN.
SELECT * FROM v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE 11.2.0.1.0 Production"
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--test for 11g
CREATE TABLE XML_TEST(
ID NUMBER(2,0),
XML XMLTYPE
INSERT INTO XML_TEST
VALUES
1,
XMLTYPE
<msg>
<data>
<fields>
<id>g1</id>
<dat>data1</dat>
</fields>
</data>
</msg>
INSERT INTO XML_TEST
VALUES
2,
XMLTYPE
<msg>
<data>
<fields>
<id>g2</id>
<dat>data2</dat>
</fields>
</data>
</msg>
INSERT INTO XML_TEST
VALUES
3,
XMLTYPE
<msg>
<data>
<fields>
<id>g3</id>
<dat>data3</dat>
</fields>
<fields>
<id>g4</id>
<dat>data4</dat>
</fields>
<fields>
<dat>data5</dat>
</fields>
</data>
</msg>
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x LEFT OUTER JOIN
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)y ON 1=1
ID DAT SEQNO ID_REAL
1 data1 1 g1
2 data2 1 g2
3 data3 1 g3
3 data4 1 g4
3 data5 Here's everything fine, now the problem:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
"CORE 10.2.0.1.0 Production"
TNS for HPUX: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
--exactly the same environment as 11g (tables and rows)
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x LEFT OUTER JOIN
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)y ON 1=1
ID DAT SEQNO ID_REAL
1 data1 1 g1
2 data2 1 g2
3 data3 1 g3
3 data4 1 g4As you can see in 10g I don't have the last row, it seems that Oracle 10g doesn't recognize the LEFT OUTER JOIN.
Is this a bug?, Metalink says that sometimes we can have an ORA-0600 but in this case there is no error returned, just incorrect results.
Please help.
Regards.Hi A_Non.
Thanks a lot, I tried with this:
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x,
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)(+) y ;And is giving me the complete output.
Thanks again.
Regards. -
Create a view that limits a large table, but also allows an outer join ?
oracle 10.2.0.4
CREATE TABLE MY_PAY_ITEMS
( EMP VARCHAR2(8) NOT NULL
, PAY_PRD VARCHAR2(8) NOT NULL
, KEY1 VARCHAR2(8) NOT NULL
, KEY2 VARCHAR2(8) NOT NULL
, LN_ITEM VARCHAR2(4) NOT NULL
, ITEM_AMT NUMBER(24,2) NOT NULL
, FILLER VARCHAR2(100) NOT NULL)
INSERT INTO MY_PAY_ITEMS
SELECT A.EMP
, B.PAY_PRD
, C.KEY1
, D.KEY2
, E.LN_ITEM
, F.ITEM_AMT
FROM (SELECT TO_CHAR(ROWNUM, '00000000') "EMP" FROM DUAL CONNECT BY LEVEL <= 50 ) A
, (SELECT '2010-' || TO_CHAR(ROWNUM,'00') "PAY_PRD" FROM DUAL CONNECT BY LEVEL <= 52) B
, (SELECT TO_CHAR(ROWNUM, '000') "KEY1" FROM DUAL CONNECT BY LEVEL <= 8) C
, (SELECT TO_CHAR(ROWNUM, '000') "KEY2" FROM DUAL CONNECT BY LEVEL <= 5) D
, (SELECT TO_CHAR(ROWNUM,'000') "LN_ITEM" FROM DUAL CONNECT BY LEVEL <= 20) E
, (select round(DBMS_RANDOM.VALUE * 400,2) "ITEM_AMT" from dual) F
CREATE UNIQUE INDEX MY_PAY_ITEMS ON MY_PAY_ITEMS (EMP, PAY_PRD, KEY1, KEY2, LN_ITEM)
CREATE TABLE MY_ITEM_DISPLAY
( DISPLAY_CODE VARCHAR2(4) NOT NULL
, SEQUENCE NUMBER(2) NOT NULL
, COLUMN_ITEM1 VARCHAR2(4) not null
, COLUMN_ITEM2 VARCHAR2(4) not null
, COLUMN_ITEM3 VARCHAR2(4) not null
, COLUMN_ITEM4 VARCHAR2(4) not null)
INSERT INTO MY_ITEM_DISPLAY VALUES ('01',10,'001','003','004','005');
INSERT INTO MY_ITEM_DISPLAY VALUES ('01',20,'007','013','004','009');
INSERT INTO MY_ITEM_DISPLAY VALUES ('01',30,'001','004','009','011');
INSERT INTO MY_ITEM_DISPLAY VALUES ('01',40,'801','304','209','111');
INSERT INTO MY_ITEM_DISPLAY VALUES ('02',10,'001','003','004','005');
INSERT INTO MY_ITEM_DISPLAY VALUES ('02',20,'007','013','004','009');
INSERT INTO MY_ITEM_DISPLAY VALUES ('02',30,'001','004','009','011');
MY_PAY_ITEMS is a table that stores payslip line items. It has a total size of 500,000,000 rows.
EMP is the unique employee id, We have approx 200,000 employees (with approx 50,000 being active today).
PAY_PRD is a weekly pointer (2010-01, 2010-02 ... 2010-52), we have data from 2004 and are adding a new pay period every week. 2010-01 is defined as the first monday in 2010 to the first sunday in 2010 etc.
KEY1 is an internal key, it tracks the timeline within the pay period.
KEY2 is a child of KEY1, it tracks the sequence of events within KEY1.
LN_ITEM is the actual pay item that resulted from the event on average a person generates 20 rows per event. Note that in this example everybody gets the same LN_ITEM values, but in practice it is 20 selected from 300
ITEM_AMT is the net pay for the line item.
FILLER is an assortment of fields that are irrelevant to this question, but do act as a drag on any row loads.
MY_ITEM_DISPLAY is a table that describes how certain screens should display items. The screen itself is a 4 column grid, with the contents of the individual cells being defined as a lookup of LN_ITEMS to retrieve the relevant LN_AMT.
We have an application that receives a DISPLAY_CODE and an EMP. It automatically creates a sql statement along the lines of
SELECT * FROM MY_VIEW WHERE DISPLAY_CODE = :1 AND EMP = :2
and renders the output for the user.
My challenge is that I need to rewrite MY_VIEW as follows:
1) Select the relevant rows from MY_ITEM_DISPLAY where DISPLAY_CODE = :1
2) Select the relevant all rows from MY_PAY_ITEMS that satisfy the criteria
a) EMP = :2
b) PAY_PRD = (most recent one for EMP as at sysdate, thus if they last got paid in 2010-04 , return 2010-04)
c) KEY1 = (highest key1 within EMP and PAY_PRD)
d) KEY2 = (highest key2 within EMP, PAY_PRD and KEY1)
3) I then need to cross reference these to create a tabular output
4) Finally I have to return a line of 0's where no LN_ITEMs exist ( DISPLAY_CODE 01, sequence 40 contains impossible values for this scenario)
The below query does part of it (but not the PAY_PRD, KEY1, KEy2 )
select * from (
SELECT A.DISPLAY_CODE
, B.EMP
, A.SEQUENCE
, MAX(DECODE(B.LN_ITEM, A.COLUMN_ITEM1, B.ITEM_AMT, 0)) "COL1"
, MAX(DECODE(B.LN_ITEM, A.COLUMN_ITEM2, B.ITEM_AMT, 0)) "COL2"
, MAX(DECODE(B.LN_ITEM, A.COLUMN_ITEM3, B.ITEM_AMT, 0)) "COL3"
, MAX(DECODE(B.LN_ITEM, A.COLUMN_ITEM4, B.ITEM_AMT, 0)) "COL4"
FROM MY_ITEM_DISPLAY A, MY_PAY_ITEMS B
WHERE B.PAY_PRD = '2010-03'
GROUP BY A.DISPLAY_CODE, B.EMP, A.SEQUENCE)
WHERE DISPLAY_CODE = '01'
AND EMP = '0000011'
ORDER BY SEQUENCE
My questions
1) How do I do the PAY_PRD, KEY1, KEY2 constraint, can I use some form of ROW_NUMBER() OVER function ?
2) How do I handle the fact that none of the 4 column LN_ITEMS may exist (see sequence 40, none of those line items can exist)... Ideally the above SQL should return
01, 0000011, 10, <some number>, <some number>, <some number>, <some number>
01, 0000011, 20, <some number>, <some number>, <some number>, <some number>
01, 0000011, 30, <some number>, <some number>, <some number>, <some number>
01, 0000011, 40, 0 , 0 , 0 , 0
I tried a UNION, but his prevented the view from eliminating the bulk of the MY_PAY_ITEMS rows, as it resolve ALL of MY_PAY_ITEMS instead of just retrieving rows for the one EMP passed to the view. The same seems to be true for any outer joins.Hi, if i understood you properly, you need :
select nvl(q.display_code,lag(q.display_code) over (order by rownum)) display_code,
nvl(q.emp,lag(q.emp) over (order by rownum)) emp,
m.s,
nvl(q.COL1,0) COL1,
nvl(q.COL2,0) COL2,
nvl(q.COL3,0) COL3,
nvl(q.COL4,0) COL4,
nvl(PAY_PRD,lag(q.PAY_PRD) over (order by rownum)) PAY_PRD,
nvl(KEY1,lag(q.KEY1) over (order by rownum)) KEY1,
nvl(KEY2,lag(q.KEY2) over (order by rownum)) KEY2
from(
select d.display_code,
t.emp,
d.sequence,
max(DECODE(t.LN_ITEM, d.COLUMN_ITEM1, t.ITEM_AMT, 0)) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) "COL1",
max(DECODE(t.LN_ITEM, d.COLUMN_ITEM2, t.ITEM_AMT, 0)) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) "COL2",
max(DECODE(t.LN_ITEM, d.COLUMN_ITEM3, t.ITEM_AMT, 0)) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) "COL3",
max(DECODE(t.LN_ITEM, d.COLUMN_ITEM4, t.ITEM_AMT, 0)) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) "COL4",
max(t.PAY_PRD) PAY_PRD,
max(t.key1) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) key1,
max(t.key2) keep (dense_rank first order by to_date(t.pay_prd,'yyyy-mm') desc ) key2
from MY_PAY_ITEMS t
join MY_ITEM_DISPLAY d
on d.display_code = '01'
where t.emp = '00000011'
group by d.display_code, t.emp, d.sequence
) q
full outer join (select level*10 s from dual connect by level <= 4) m
on m.s = q.sequence
DISPLAY_CODE
EMP
S
COL1
COL2
COL3
COL4
PAY_PRD
KEY1
KEY2
01
00000011
10
101.1
103.1
104.1
105.1
2010-03
008
005
01
00000011
20
107.1
113.1
104.1
109.1
2010-03
008
005
01
00000011
30
101.1
104.1
109.1
111.1
2010-03
008
005
01
00000011
40
0
0
0
0
2010-03
008
005
Ramin Hashimzade -
Tabular form from query with outer join destroys the universe!
Well, maybe just my app...
At any rate, what I have is a query that pulls RISKS for a project and does a reasonable outer join which joins the latest value from a RISK_HISTORY table. Values for RISK are updated and the value for RISK_HISTORY is changed and a new entry added to the RISK_HISTORY table.
At least that's how it's supposed to be.
I was able to do this with a report-with-a-form region by adding an extra update process to do a new insert into RISK_HISTORY but it seems that the tabular form is a bit more work.
Here's the query I'm using:
select * from(
select
r.RISK_SEQ RISK_SEQ_DISPLAY,
r.RISK_PRIORITY,
r.RISK_INFO,
r.RISK_MITIGATION,
r.ONGOING_FLAG,
r.RISK_DATE,
r.WEEK_GROUP_SEQ,
r.CREATED_ON,
r.CREATED_BY,
r.LAST_MODIFIED_ON,
r.LAST_MODIFIED_BY,
rh.STATUS,
row_number() over (partition by rh.risk_seq order by rh.last_modified_on desc) rn
from RISK r, WEEK_GROUP w, RISK_HISTORY rh
where w.PROJECT_SEQ=43
and r.week_group_seq= w.week_group_seq
and w.week_index=0
and rh.RISK_SEQ = r.RISK_SEQ
) where rn = 1
Clicking "Add Row" gets me this:
Error in mru internal routine: ORA-20001: no data found in tabular form
Running debug doesn't seem to expose much for me either. Is there a better tact for me to take here?
Thanks,
JonHi Prazy,
using nvl also didn't solve my problem.Actually my problem is I am having a table a in which I have a column called satus, status has the values like A or I .I have one lookup called MTH_BUYSINESS_FUNCTION in which for lookup_code A I have menaing as Active and for lookup_code I meaning is Inactive.Now in table a for sttaus I have two values one A and one null Now I want to write sql which displayes the meaning for column staus.Result should be Active and null .If I am uisng 1 query which I gave u I am not able to get the 2nd row in my output.If I use 2nd query then I get duplicate rows.
Thanks ,
Amrit -
Left Outer Joining multiple tables to one source table FAILS with VLD-1511
Hi all,
Is it me, or is OWB unable to handle left outer joining 1 source table to multiple other tables?
I want to load a fact table so I have 1 source table with measures. This table must be outer joined to some dimensions that have their FK in the fact table.
The SQL statement would look like this (and is perfectly valid):
select ...
from input, dim1, dim2
where input.c1 = dim1.c1(+)
and input.c2 = dim2.c2(+);
I put the where clause in the joiner operator and validate, but that gives me message VLD-1511: A table may be outer joined to at most one other table.
Even splitting this up into one outer join per joiner still gives this message.
A search and look around on the forum and on metalink shows there are related issues (like bug 3334035). Seemingly creating a view is the work-around to use.....? (ie downgrading owb to a simple gui tool) }-;
Have other people experienced this problem of not being able to outer join one input table to multiple other tables?
Thanks,
EdI have had some feedback from Oracle. It turns out this has to do with 2 issues. Below I have pasted the text that Support gave me:
<---------- START QUOTE ---------->
RESEARCH
=========
Bug 3437036 KEY LOOKUP DOES NOT DETECT ORA-1417 IN VALIDATE/GENERATE STEP
Unpublished Bug 4211684 FORWARD PORT OF BUG 3437036
shows:
Some more development has been completed when this bug is fixed in Paris.
The following are the details:
1. If the join condition contains a full outer join such as
tab1.c (+) = tab2.c (+) and tab2.c (+) = tab3.c
then the new validations implemented for this bug do not apply since
in OWB, full outer join triggers generation of joins in ANSI syntax.
ANSI syntax does not have the original problem the base bug of this
bug reported.
2. If the join condition does not contain any full outer join condition,
then the join is generated in Oracle join syntax, which is subject two
several restrictions. The fix to this bug check two of the restrictions.
3. The first restriction in Oracle syntax is that the outer join operator
"(+)" can only directly be attached to a column name. If you attach it
to an expression, such as the following:
(tab1.c + 1) (+) = tab2.c
Then there will be an ORA-936 error at the time of mapping deployment.
For this case, I have added a validation message VLD-1512 to error out
this situation.
4. The second restriction in Oracle syntax is that a table can only be
outer joined to exactly one other table.
For example, this is an invalid join in Oracle syntax:
tab1.c (+) = tab2.c and tab1.d (+) = tab3.d
because tab1 is left outer joined to tab2 and tab3.
But note that the following is still valid in Oracle syntax:
tab1.c (+) = tab2.c and tab1.d = tab3.d (+)
because tab1 is left outer joined to tab2 and right outer joined to tab3.
So this latter case does not violate the restriction that "same oj" to
more than 1 table is not allowed.
If same oj to more than 1 table is specified in a join condition,
VLD-1511 will be issued, and the map is made invalid.
<---------- END QUOTE ---------->
OWB does a partial validation, ie not all access paths are (can be) checked. A full check is only done by the database itself. So some scenarios (like checking whether multiple tables are outer joined the correct way) are not checked, and in this case are flagged with an error (even though it is actually a correct scenario).
Seemingly this was not flagged with an error in earlier versions of OWB, so beware, OWB behaviour may change when upgrading...
Alternative solutions are (1) using key lookups, (2) using a view with all outer joins in there, (3) using intermediate result tables between the joins.
Hope this info helps some people prevent spending too much time on a false error message,
Ed
Maybe you are looking for
-
Printing multiple photos on one sheet in iPhoto 11
I have a relatively new Mac Mini and today I tried to print from iPhoto for the first time. I needed to print 2 up of the same photo on each sheet but I could find no way to do this. I'm using a Canon MP530 for photo printing. I've been using this pr
-
Hi! I have a following problem: When I try to paste long input to my command-line app, only few first lines are pasted. I see, that I Can copy that to apps like TextWrangler, TextEdit. What Can I do? Regards.
-
Facing an issue with rcuHome.zip file whille installing Web Logic Server in
While installing WLS from newly created view, getting the below error. cp: cannot stat `/ade/akalikot_Fin-223-UI/rcuintegration/shiphome/rcuHome.zip': No such file or directory ... pseudo translation files ... oracle.apps.common.resource, oracle.soa.
-
my ipad mini was stolen. it is showing in icloud as offline. i did not install the i0S7 update. with that being said, is it possible for my info to have been erased ?
-
How can I customize the warning message displayed in the Security Dialog
Hi, Before downloading my application on the client machine JWS shows a Security Warning dialog to the client. I want to customise the Warning message displayed in this dialog. How can I do so? Thanks,