Skip to content
Snippets Groups Projects
Commit a2ae4d9d authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Génération du script SQL de clonage de schéma: correction de la requête SQL...

Génération du script SQL de clonage de schéma: correction de la requête SQL car impossible de mettre des order by au milieu d'un UNION.
parent d3d47df9
No related branches found
No related tags found
No related merge requests found
Pipeline #3602 passed
......@@ -295,15 +295,28 @@ EOS;
{
$schemaName = $this->extractSchemaNameFromConnection($connection);
$refConstraintsSql = NULL;
if ($refConstraintsIncluded) {
$refConstraintsSql = $this->generateSQLForRefConstraintsCreation($connection);
$refConstraintsSql = <<<EOS
UNION ALL
$refConstraintsSql
EOS;
}
$sql = <<<EOS
SELECT sql from (
--
-- sequences
--
SELECT DBMS_METADATA.GET_DDL ('SEQUENCE', sequence_name, sequence_owner) as sql
SELECT 'A_'||sequence_name as ord, DBMS_METADATA.get_ddl ('SEQUENCE', sequence_name, sequence_owner) as sql
FROM all_sequences
where sequence_owner = '$schemaName'
order by sequence_name
UNION ALL
......@@ -312,11 +325,10 @@ UNION ALL
-- tables
--
SELECT DBMS_METADATA.get_ddl ('TABLE', table_name, owner) as sql
SELECT 'B_'||table_name as ord, DBMS_METADATA.get_ddl ('TABLE', table_name, owner) as sql
FROM all_tables
WHERE owner = '$schemaName' and
table_name not in (select mview_name from all_mviews) -- exclusion des tables liées à des vues matérialisées
order by table_name
UNION ALL
......@@ -325,13 +337,12 @@ UNION ALL
-- constraints : unique
--
SELECT DBMS_METADATA.get_ddl ('CONSTRAINT', constraint_name, owner) as sql
SELECT 'C_'||constraint_name as ord, DBMS_METADATA.get_ddl ('CONSTRAINT', constraint_name, owner) as sql
from user_constraints
WHERE constraint_type in ('U') and -- unique type
index_name is null and -- écarte les contraintes liées automatiquement à un index car créées avec la table
table_name not in (select mview_name from all_mviews) -- exclusion des tables liées à des vues matérialisées
and owner = '$schemaName'
order by constraint_name
UNION ALL
......@@ -340,11 +351,10 @@ UNION ALL
-- indexes
--
SELECT DBMS_METADATA.get_ddl ('INDEX', index_name, owner) as sql
SELECT 'D_'||index_name as ord, DBMS_METADATA.get_ddl ('INDEX', index_name, owner) as sql
FROM all_indexes i
WHERE not exists (select * from user_constraints where index_name = i.index_name) -- écarte les index créés automatiquement car liés à une contrainte
and owner = '$schemaName'
order by index_name
-- select * from all_indexes WHERE owner = '$schemaName';
......@@ -355,10 +365,9 @@ UNION ALL
-- views
--
SELECT DBMS_METADATA.get_ddl ('VIEW', view_name, owner) as sql
SELECT 'E_'||view_name as ord, DBMS_METADATA.get_ddl ('VIEW', view_name, owner) as sql
FROM all_views
WHERE owner = '$schemaName'
order by view_name
UNION ALL
......@@ -367,11 +376,10 @@ UNION ALL
-- packages specs
--
SELECT DBMS_METADATA.get_ddl ('PACKAGE_SPEC', OBJECT_NAME, owner) as sql
SELECT 'F_'||OBJECT_NAME as ord, DBMS_METADATA.get_ddl ('PACKAGE_SPEC', OBJECT_NAME, owner) as sql
FROM SYS.ALL_OBJECTS
WHERE owner = '$schemaName'
and UPPER(OBJECT_TYPE) = 'PACKAGE'
order by OBJECT_NAME
UNION ALL
......@@ -380,17 +388,15 @@ UNION ALL
-- procedures and functions
--
SELECT DBMS_METADATA.get_ddl ('PROCEDURE', OBJECT_NAME, owner) as sql
SELECT 'G_'||OBJECT_NAME as ord, DBMS_METADATA.get_ddl ('PROCEDURE', OBJECT_NAME, owner) as sql
FROM SYS.ALL_OBJECTS
WHERE owner = '$schemaName'
and UPPER(OBJECT_TYPE) = 'PROCEDURE'
order by OBJECT_NAME
UNION ALL
SELECT DBMS_METADATA.get_ddl ('FUNCTION', OBJECT_NAME, owner) as sql
SELECT 'G_'||OBJECT_NAME as ord, DBMS_METADATA.get_ddl ('FUNCTION', OBJECT_NAME, owner) as sql
FROM SYS.ALL_OBJECTS
WHERE owner = '$schemaName'
and UPPER(OBJECT_TYPE) = 'FUNCTION'
order by OBJECT_NAME
UNION ALL
......@@ -399,11 +405,10 @@ UNION ALL
-- packages
--
SELECT DBMS_METADATA.get_ddl ('PACKAGE_BODY', OBJECT_NAME, owner) as sql
SELECT 'H_'||OBJECT_NAME as ord, DBMS_METADATA.get_ddl ('PACKAGE_BODY', OBJECT_NAME, owner) as sql
FROM SYS.ALL_OBJECTS
WHERE owner = '$schemaName'
and UPPER(OBJECT_TYPE) = 'PACKAGE BODY'
order by OBJECT_NAME
UNION ALL
......@@ -412,10 +417,9 @@ UNION ALL
-- triggers
--
SELECT DBMS_METADATA.get_ddl ('TRIGGER', trigger_NAME, owner) as sql
SELECT 'I_'||trigger_NAME as ord, DBMS_METADATA.get_ddl ('TRIGGER', trigger_NAME, owner) as sql
FROM ALL_TRIGGERS
WHERE owner = '$schemaName'
order by trigger_NAME
UNION ALL
......@@ -424,22 +428,15 @@ UNION ALL
-- materialized views
--
SELECT DBMS_METADATA.get_ddl ('MATERIALIZED_VIEW', mview_name, owner) as sql
SELECT 'J_'||mview_name as ord, DBMS_METADATA.get_ddl ('MATERIALIZED_VIEW', mview_name, owner) as sql
FROM all_mviews
WHERE owner = '$schemaName'
order by mview_name
EOS;
if ($refConstraintsIncluded) {
$refConstraintsSql = $this->generateSQLForRefConstraintsCreation($connection);
$sql .= <<<EOS
UNION ALL
$refConstraintsSql
)
ORDER BY ORD
EOS;
}
return $sql;
}
......@@ -457,17 +454,15 @@ EOS;
-- reference constraints
--
--select DBMS_METADATA.GET_DDL('CONSTRAINT', constraint_name, owner) as sql
--select 'Z_'||mview_name as ord, DBMS_METADATA.get_ddl ('CONSTRAINT', constraint_name, owner) as sql
--from all_constraints
--where owner = '$schemaName'
-- and constraint_type = 'P'
--order by constraint_name
--union all
select DBMS_METADATA.GET_DDL('REF_CONSTRAINT', constraint_name, owner) as sql
select 'Z_'||mview_name as ord, DBMS_METADATA.get_ddl ('REF_CONSTRAINT', constraint_name, owner) as sql
from all_constraints
where owner = '$schemaName'
and constraint_type = 'R'
order by constraint_name
EOS;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment