SnowConvert : Rapport sur les références d’objet¶
Note
Les éléments intégrés ne sont pas pris en compte dans le cadre de ce rapport.
Qu’est-ce qu’une « référence d’objet » ?¶
Une référence d’objet est le terme utilisé pour se référer aux définitions DDL à l’intérieur du code source qui sont référencées par les unités de code. La table ci-dessous indique les éléments qui pourraient être des références dans chaque langue prise en charge.
Object | Teradata | Oracle | Transact-SQL | Extensibility Languages |
---|---|---|---|---|
Table | ✓ | ✓ | ✓ | ✓ |
View | ✓ | ✓ | ✓ | ✓ |
Procedure | ✓ | ✓ | ✓ | ✓ |
Function | ✓ | ✓ | ✓ | ✓ |
Macro | ✓ | |||
Package Function | ✓ | |||
Package Procedure | ✓ | |||
*Package | ✓ | |||
Join Index | ✓ | |||
Index | ✓ | |||
Synonym | ✓ | |||
Database Link | ✓ | |||
Type | ✓ | ✓ | ✓ | |
Materialized View | ✓ | |||
Trigger | ✓ | ✓ | ✓ | |
Sequence | ✓ | ✓ | ✓ | |
Constraint | ✓ | ✓ |
Note
Si un astérisque (“*”) est répertorié dans la section ci-dessus, cela signifie que l’objet est utilisé pour appeler des propriétés à partir de lui-même qui ne sont pas considérées comme des instructions DDL telles que des constantes, des variables ou des curseurs.
Où puis-je le trouver ?¶
Le rapport sur les références d’objet se trouve dans un dossier nommé « reports », dans le dossier de sortie de votre conversion. Le nom du fichier lui-même commence par « ObjectReferences » afin qu’il puisse être facilement localisé.
Le format du fichier est le suivant : .CSV.
Quelles informations contient-il ?¶
Le rapport sur les références d’objet contient les informations suivantes sur toutes les références trouvées lors de la conversion :
Colonne |
Description |
---|---|
PartitionKey |
L’identificateur unique de la conversion. |
FileName |
Le nom du fichier dans lequel se trouve l’objet. |
Caller_CodeUnit |
Le type de l’unité de code faisant référence à un élément existant. |
Caller_CodeUnit_Database |
Le base de données de l’unité de code faisant référence à un élément existant. Pour l’instant, seuls les objets du serveur SQL peuvent avoir une base de données. |
Caller_CodeUnit_Schema |
Le schéma de l’unité de code faisant référence à un élément existant. |
Caller_CodeUnit_Name |
Le nom de l’unité de code faisant référence à un élément existant. |
Caller_CodeUnit_FullName |
Le nom complet de l’objet faisant référence à un élément existant. |
Referenced_Element_Type |
Le type DDL de l’élément référencé. |
Referenced_Element_Database |
La base de données de l’élément référencé. Pour l’instant, seuls les objets du serveur SQL peuvent avoir une base de données. |
Referenced_Element_Schema |
Le schéma de l’élément référencé. |
Referenced_Element_Name |
Le nom de l’élément référencé. |
Referenced_Element_FullName |
Le nom complet de l’élément référencé. |
Ligne |
Le numéro de ligne dans le fichier où se trouve la référence. |
Relation_Type |
Indique le type de relation utilisé par l’unité de code de l’appelant et la référence de l’objet. |
Liens de la base de données Oracle en tant que références d’objet¶
Pour obtenir des informations telles que le nom de la base de données, le nom du schéma ou le nom de l’objet des références du lien de base de données, nous devons savoir comment le lien de base de données a été défini. Les liens de la base de données contiennent les informations les plus pertinentes dans la chaîne de connexion utilisée pour leur définition. Par exemple
Lien de la base de données avec le nom de la base de données¶
CREATE DATABASE LINK remote_hr_db
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB';
SELECT * FROM hr.employees@remote_hr_db;
En reprenant l’exemple ci-dessus, les informations relatives à la référence de l’objet devraient ressembler à ceci :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | N/A | remote_hr_db | hr.employees@remote_hr_db | 6 |
Lien de la base de données avec le noms de la base de données et du schéma¶
CREATE DATABASE LINK remote_hr_db1
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB.MySchema';
SELECT * FROM employees@remote_hr_db1;
En reprenant l’exemple ci-dessus, les informations relatives à la référence de l’objet devraient ressembler à ceci :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | RemoteDb | MySchema | remote_hr_db1 | hr.employees@remote_hr_db1 | 6 |
Lien de la base de données avec une chaîne de connexion¶
CREATE DATABASE LINK remote_hr_db2
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING '(DESCRIPTION=(
ADDRESS=
(PROTOCOL=TCP)
(HOST=10.48.195.17)
(PORT=1521))
(CONNECT_DATA=(SID=MyDB)))';
SELECT * FROM employees@remote_hr_db2;
En reprenant l’exemple ci-dessus, les informations relatives à la référence de l’objet devraient ressembler à ceci :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_Database | Referenced_Element_Schema | Referenced_Element_Name | Referenced_Element_FullName | Line |
---|---|---|---|---|---|---|
SELECT | CREATE DATABASE LINK | MyDB | N/A | remote_hr_db2 | employees@remote_hr_db2 | 6 |
Type de relation¶
Le type de relation représente la manière dont une unité de code de l’appelant est liée à une référence d’objet. SnowConvert est capable d’identifier les types de relations suivants :
FOREIGN KEY
INSERT
DELETE
UPDATE
CALL
EXECUTE
SYNONYM
ALTER
DROP
MERGE
TRUNCATE
LOCK
INDEX
TABLE COLUMN
GRANT
REVOKE
SELECT
COLUMN
FROM
WHERE
HAVING
GROUP BY
JOIN
ORDER BY
Exemples¶
Procédure stockée faisant référence à une table par le biais d’une instruction UPDATE :
CREATE TABLE TABLE2
(
COL1 VARCHAR(50) NOT NULL,
COL2 INT NOT NULL
);
CREATE OR REPLACE PROCEDURE Procedure01 (param1 NUMBER)
IS
BEGIN
UPDATE TABLE2
SET COL1 = 'Anderson'
WHERE COL2 = param1;
END;
Le rapport ressemblera à la table suivante :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE PROCEDURE | CREATE TABLE | TABLE2 | 10 | UPDATE |
Une table faisant référence à une autre table par l’intermédiaire d’une KEY FOREIGN :
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE TABLE TABLE2
(
COL1 INT,
CONSTRAINT FK_COL1 FOREIGN KEY (COL1)
REFERENCES TABLE1(COL1)
);
Le rapport ressemblera à la table suivante :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE TABLE | CREATE TABLE | TABLE1 | 10 | FOREIGN KEY |
Une table référencée par une vue dans la clause FROM de l’instruction SELECT :
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE VIEW VIEW1
AS
SELECT * FROM TABLE1;
Le rapport ressemblera à la table suivante :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE TABLE | TABLE1 | 8 | SELECT - FROM |
Une fonction définie par l’utilisateur (UDF) référencée par une vue en tant que colonne d’un ensemble de résultats.
CREATE FUNCTION FUNCTION1(PARAM1 INT)
RETURN NUMBER
IS
BEGIN
RETURN(PARAM1 + 1);
END;
CREATE VIEW VIEW1
AS
SELECT FUNCTION1(*) FROM TABLE1;
Le rapport ressemblera à la table suivante :
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE FUNCTION | FUNCTION1 | 10 | SELECT - COLUMN |