Re: Creating tables & synonyms with Des2k.
Date: Mon, 23 Aug 1999 19:21:02 +0400
Message-ID: <37C166DE.BF1B748B_at_dd.ru>
Frank van Bortel wrote:
>
> Bill Williams wrote:
> <snip>
>
> > Designer is not allowing me to create a synonym with the same name as
> > the table.
>
> Bill, sorry to say, but it's a bug (assuming you're using 2.1.1). There's a bit of history
> here: building release 2, which can load stuff directtly into the DB, a developer
> tested this, and got the 'Name is already in use by an exiting object' when testing the
> table+synonym stuff. Figures (you cannot own a table, and create a synonym for it,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> unless public). So, a check was built in to Des2k to prevent this from happening
^^^^^^^^^^^^^
> (...).
> There is a way to disable that, but need to dig into the triggers. --
> Frank van Bortel
>
> Technical Consultant Oracle
> V&L Informatica BV
> -------------------------------------------------
> Work Home
> Postbus 545 Hunzestraat 4
> 7500 AM Enschede 7555 WB Hengelo
> (31)53.434.1500 (31)74.242.5046
You can generate a script for creating public synonyms and remove PUBLIC keywords from the script by any text editor with Find/Replace feature.
There is also a script to generate private synonyms for public synonym declarations (see below).
But does anybody know any other solution for the problem?
Thanks in advance.
- SQL*Plus script:
PROMPT
PROMPT -------------------------------------------------------------------; PROMPT -- Private synonyms generation from Public synonym declarations --; PROMPT -- --; PROMPT -- 1 - Application name --; PROMPT -- 2 - Version of Application (single number) --; PROMPT -- 3 - Database Name --; PROMPT -- 4 - Objects Owner --; PROMPT -- --; PROMPT -- (c) Ivan Mugalev --; PROMPT -------------------------------------------------------------------;PROMPT set echo off
set heading off
set linesize 400
set pagesize 300
set verify off
set feedback off
ACCEPT app_name CHAR PROMPT '1) Application Name : ' ACCEPT app_ver CHAR PROMPT '2) Version : ' ACCEPT db_name CHAR PROMPT '3) Database : ' ACCEPT user_name CHAR PROMPT '4) Objects owner : 'set termout off
spool syn_tbl.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || TD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_TABLE_DEFINITIONS TD,
CI_TABLE_IMPLEMENTATIONS TI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (TI.database_user_reference = US.id)
and (TI.object_implementation_type = 'TBI')
and (TD.id = TI.table_definition_reference)
and (DS.table_definition_reference = TD.id)
and (DS.synonym_for = 'TBL')
and (DS.scope = 'PUBLIC');
spool off
spool syn_vw.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || VD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_VIEW_DEFINITIONS VD,
CI_VIEW_IMPLEMENTATIONS VI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (VI.database_user_reference = US.id)
and (VI.object_implementation_type = 'VWI')
and (VD.id = VI.view_definition_reference)
and (DS.view_definition_reference = VD.id)
and (DS.synonym_for = 'VW')
and (DS.scope = 'PUBLIC');
spool off
spool syn_seq.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || SD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_SEQUENCES SD,
CI_SEQUENCE_IMPLEMENTATIONS SI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (SI.database_user_reference = US.id)
and (SI.object_implementation_type = 'SQI')
and (SD.id = SI.sequence_reference)
and (DS.sequence_reference = SD.id)
and (DS.synonym_for = 'OSQ')
and (DS.scope = 'PUBLIC');
spool off
spool syn_sna.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || ND.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_SNAPSHOT_DEFINITIONS ND,
CI_SNAPSHOT_IMPLEMENTATIONS NI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (NI.database_user_reference = US.id)
and (NI.object_implementation_type = 'SNI')
and (ND.id = NI.snapshot_definition_reference)
and (DS.snapshot_definition_reference = ND.id)
and (DS.synonym_for = 'SNP')
and (DS.scope = 'PUBLIC');
spool off
spool syn_pck.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || PD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_PLSQL_MODULES PD,
CI_PLSQL_MOD_IMPLEMENTATIONS PI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (PI.database_user_reference = US.id)
and (PI.object_implementation_type = 'PMI')
and (PI.scope in ('DATABASE', 'BOTH'))
and (PD.plsql_module_type = 'PACKAGE')
and (PD.id = PI.plsql_module_reference)
and (DS.plsql_module_reference = PD.id)
and (DS.synonym_for = 'MOD')
and (DS.scope = 'PUBLIC');
spool off
spool syn_fun.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || FD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_PLSQL_MODULES FD,
CI_PLSQL_MOD_IMPLEMENTATIONS FI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (FI.database_user_reference = US.id)
and (FI.object_implementation_type = 'PMI')
and (FI.scope in ('DATABASE', 'BOTH'))
and (FD.plsql_module_type = 'FUNCTION')
and (FD.id = FI.plsql_module_reference)
and (DS.plsql_module_reference = FD.id)
and (DS.synonym_for = 'MOD')
and (DS.scope = 'PUBLIC');
spool off
spool syn_prc.sql
select 'create synonym ' || DS.name || ' for ' ||
'&user_name' || '.' || PD.name || chr(10)||'/'||chr(10)
from CI_DATABASE_SYNONYMS DS,
CI_PLSQL_MODULES PD,
CI_PLSQL_MOD_IMPLEMENTATIONS PI,
ci_database_users US,
ci_databases DB,
ci_application_systems AP
where
(AP.name = Upper('&app_name'))
and (AP.version = &app_ver)
and (DB.application_system_owned_by = AP.id)
and (DB.name = Upper('&db_name'))
and (US.database_reference = DB.id)
and (US.name = Upper('&user_name'))
and (PI.database_user_reference = US.id)
and (PI.object_implementation_type = 'PMI')
and (PI.scope in ('DATABASE', 'BOTH'))
and (PD.plsql_module_type = 'PROCEDURE')
and (PD.id = PI.plsql_module_reference)
and (DS.plsql_module_reference = PD.id)
and (DS.synonym_for = 'MOD')
and (DS.scope = 'PUBLIC');
spool off
set verify on
set termout on
set feedback on
-- Valeri Sorokine ProSoft, Russia, Moscow, Information Systems Division Phone: +7 (095) 234 0636 (6 lines) FAX: +7 (095) 234 0640 E-mail: vsorokin_at_dd.ru OR vsorokin_at_prosoft.ru http://www.dd.ruReceived on Mon Aug 23 1999 - 17:21:02 CEST
