Tuesday, August 31, 2010

Oracle tips

'Select Into' using dynamic sql
execute immediate 'select count(*) from dual' INTO l_cnt;
OR
sql_stmt := 'SELECT COUNT(*) FROM BACKUP_TABLE_NAME WHERE BACKUP_ID = :1';
EXECUTE IMMEDIATE sql_stmt INTO total USING state_id;

Using ampersand without variable substitution
set define off
OR
insert into companies values ('Bob &' || ' Sons');
OR
set scan off

User and Tablespace mapping
select USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
from dba_users
order by USERNAME


Monday, August 30, 2010

Oracle: Fetch list of Foreign Keys of other tables pertaining to current table

SELECT c.table_name table_name, c.constraint_name FOREIGN_KEY_NAME
FROM user_constraints c, user_constraints p
WHERE c.r_constraint_name = p.constraint_name
AND c.r_owner = p.owner
AND c.constraint_type='R'
AND p.table_name = 'YOUR_TABLE_NAME';

If you want to know which column in other table is referring to current table

SELECT c.table_name table_name, c.constraint_name FOREIGN_KEY_NAME, a.column_name
FROM user_constraints c, user_constraints p, SYS.ALL_CONS_COLUMNS a
WHERE c.r_constraint_name = p.constraint_name
AND a.constraint_name = c.constraint_name
AND c.r_owner = p.owner
AND c.owner = a.owner
AND c.constraint_type='R'
AND p.table_name = 'YOUR_TABLE_NAME';