RSS feed from Oakie's blog point me to Toon's Koppelaars post and his redirection to Morten Braten blog. Morten wrote excellent post about stored PL/SQL procedures - Mythbusters: Stored Procedures Edition.
regards,
Marcinselect name1 from T1 where id1 in (select id1 from T2 where name2='NAME2');
select T1.name1 from T1 where T1.id1 in (select T2.id1 from T2 where name2='NAME2');
SQL> desc T1
Name Null? Type
----------------------------------------- -------- ----------------------------
ID1 NUMBER
NAME1 VARCHAR2(100)
SQL> desc T2
Name Null? Type
----------------------------------------- -------- ----------------------------
ID2 NUMBER
NAME2 VARCHAR2(100)
SQL> select id1, name1 from T1;
ID1 NAME1
---------- -------------------------------------------------------
1 NAME1
SQL> select id2, name2 from T2;
ID2 NAME2
---------- -------------------------------------------------------
2 NAME2
SQL> select T1.name1 from T1 where T1.id1 in (select T2.id1 from T2 where name2='NAME2');
select T1.name1 from T1 where T1.id1 in (select T2.id1 from T2 where name2='NAME2')
*
ERROR at line 1:
ORA-00904: "T2"."ID1": invalid identifier
Looks OK Oracle found our error and query has not been executed. What about first example ?SQL> select name1 from T1 where id1 in (select id1 from T2 where name2='NAME2'); NAME1 -------------------------------------------------------------------------------- NAME1 SQL>
SQL> select id1 from T2 where name2='NAME2';
select id1 from T2 where name2='NAME2'
*
ERROR at line 1:
ORA-00904: "ID1": invalid identifier
SQL> select sample_time,program, session_id, session_state, event, seq#, sql_id, '0' || trim(to_char(p1,'XXXXXXXXXXXXXXXXX')) "p1raw", p3
2 from v$active_session_history
3 where
4 sample_time >= to_date('18-7-2010 13:50:10','dd-mm-yyyy hh24:mi:ss')
5 and sample_time <= to_date('18-7-2010 13:54:58','dd-mm-yyyy hh24:mi:ss')
6 and event like 'library%'
7 order by sample_time desc
8 /
SAMPLE_TI PROGRAM SESSION_ID SESSION_STATE EVENT SEQ# SQL_ID p1raw P3
--------- -------------- ---------- ------------- ------------------ ----- ------- ----------- ---
18-JUL-10 importantp.exe 472 WAITING library cache lock 214 1548901218 07000002AC789A98 210
18-JUL-10 otherprogr.exe 436 WAITING library cache lock 8 2855865705 07000002AC789A98 210
18-JUL-10 375 WAITING library cache lock 33 261624711 07000002AC789A98 310
SQL> select kglnaown "Owner", kglnaobj "Object" from x$kglob where kglhdadr='07000002AC789A98'; Owner Object ------ -------- SOFT SNDQ
SQL> select object_type, object_name from dba_objects where owner='SOFT' and object_name = 'SNDQ'; OBJECT_TYPE OBJECT_NAME ----------- ----------- QUEUE SNDQ
ORA-00942: table or view does not exist
ORA-01031: insufficient privileges
alter system set events '942 trace name errorstack level 1';
alter session set events '942 trace name errorstack level 1';
SQL> select username from dba_users;
select username from dba_users
ERROR at line 1:
ORA-00942: table or view does not exist
Tue Sep 22 11:31:58 2009
Errors in file /oracle/app/diag/rdbms/pioro/pioro/trace/pioro_ora_23409.trc:
ORA-00942: table or view does not exist
Trace file details
*** 2009-09-22 11:31:58.607
*** SESSION ID:(152.1313) 2009-09-22 11:31:58.607
*** CLIENT ID:() 2009-09-22 11:31:58.607
*** SERVICE NAME:(SYS$USERS) 2009-09-22 11:31:58.607
*** MODULE NAME:(SQL*Plus) 2009-09-22 11:31:58.607
*** ACTION NAME:() 2009-09-22 11:31:58.607
----- Error Stack Dump -----
ORA-00942: table or view does not exist
----- Current SQL Statement for this session (sql_id=chvsmttqjzjkn) -----
select username from dba_users