SnowConvert: Relatório de referências a objetos¶
Nota
Os elementos incorporados não são considerados como parte deste relatório.
O que é uma «Referência de objeto»?¶
Uma referência de objeto é o termo usado para se referir a definições DDL no código-fonte, que estão sendo referenciadas por unidades de código. A tabela abaixo mostra quais elementos podem ser referenciados em cada idioma suportado.
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 | ✓ | ✓ |
Nota
Se um asterisco (“*”) estiver listado na seção acima, isso significa que o objeto é usado para chamar propriedades de si mesmo que não são consideradas instruções DDL, como constantes, variáveis ou cursores.
Onde posso encontrá-lo?¶
O relatório de referências a objetos pode ser encontrado em uma pasta chamada «reports», na pasta de saída de sua conversão. O nome do arquivo em si começa com «ObjectReferences» para que possa ser facilmente localizado.
O formato do arquivo é .CSV.
Que informações ele contém?¶
O relatório de referências a objetos contém as seguintes informações sobre todas as referências encontradas durante a conversão:
Coluna |
Descrição |
---|---|
PartitionKey |
O identificador exclusivo da conversão. |
FileName |
O nome do arquivo no qual o objeto está localizado. |
Caller_CodeUnit |
O tipo da unidade de código que faz referência a um elemento existente. |
Caller_CodeUnit_Database |
O banco de dados da unidade de código que faz referência a um elemento existente. Por enquanto, somente os objetos do servidor SQL podem ter um banco de dados. |
Caller_CodeUnit_Schema |
O esquema da unidade de código que faz referência a um elemento existente. |
Caller_CodeUnit_Name |
O nome da unidade de código que faz referência a um elemento existente. |
Caller_CodeUnit_FullName |
O nome totalmente qualificado do objeto que faz referência a um elemento existente. |
Referenced_Element_Type |
O tipo DDL do elemento referenciado. |
Referenced_Element_Database |
O banco de dados do elemento referenciado. Por enquanto, somente os objetos do servidor SQL podem ter um banco de dados. |
Referenced_Element_Schema |
O esquema do elemento referenciado. |
Referenced_Element_Name |
O nome do elemento referenciado. |
Referenced_Element_FullName |
O nome qualificado completo do elemento referenciado. |
Linha |
O número da linha dentro do arquivo em que a referência está localizada. |
Relation_Type |
Mostra o tipo de relação usada por meio da unidade de código do chamador e da referência do objeto. |
Links do Oracle Database como referências de objeto¶
Para obter informações como o nome do banco de dados, o nome do esquema ou o nome do objeto das referências do link do banco de dados, precisamos saber como o link do banco de dados foi definido. Os links de banco de dados contêm as informações mais relevantes na cadeia de caracteres de conexão usada em sua definição. Por exemplo
Link de banco de dados com o nome do banco de dados¶
CREATE DATABASE LINK remote_hr_db
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB';
SELECT * FROM hr.employees@remote_hr_db;
Usando o exemplo acima, as informações de referência do objeto devem ter a seguinte aparência:
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 |
Link de banco de dados com nomes de bancos de dados e esquemas¶
CREATE DATABASE LINK remote_hr_db1
CONNECT TO hr_user
IDENTIFIED BY hr_password
USING 'RemoteDB.MySchema';
SELECT * FROM employees@remote_hr_db1;
Usando o exemplo acima, as informações de referência do objeto devem ter a seguinte aparência:
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 |
Link de banco de dados com uma cadeia de caracteres de conexão¶
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;
Usando o exemplo acima, as informações de referência do objeto devem ter a seguinte aparência:
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 |
Tipo de relacionamento¶
O tipo de relação representa como uma unidade de código do chamador está relacionada a uma referência de objeto. O SnowConvert é capaz de identificar os seguintes tipos de relações:
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
Exemplos¶
Um procedimento armazenado que faz referência a uma tabela por meio de uma instrução 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;
O relatório mostrará algo parecido com a tabela a seguir:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE PROCEDURE | CREATE TABLE | TABLE2 | 10 | UPDATE |
Uma tabela que faz referência a outra tabela por meio de um FOREIGN KEY:
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE TABLE TABLE2
(
COL1 INT,
CONSTRAINT FK_COL1 FOREIGN KEY (COL1)
REFERENCES TABLE1(COL1)
);
O relatório mostrará algo parecido com a tabela a seguir:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE TABLE | CREATE TABLE | TABLE1 | 10 | FOREIGN KEY |
Uma tabela referenciada por uma visualização na cláusula FROM da instrução SELECT:
CREATE TABLE TABLE1
(
COL1 INT
);
CREATE VIEW VIEW1
AS
SELECT * FROM TABLE1;
O relatório mostrará algo parecido com a tabela a seguir:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE TABLE | TABLE1 | 8 | SELECT - FROM |
Uma função definida pelo usuário (UDF) referenciada por uma exibição como uma coluna do conjunto de resultados.
CREATE FUNCTION FUNCTION1(PARAM1 INT)
RETURN NUMBER
IS
BEGIN
RETURN(PARAM1 + 1);
END;
CREATE VIEW VIEW1
AS
SELECT FUNCTION1(*) FROM TABLE1;
O relatório mostrará algo parecido com a tabela a seguir:
Caller_CodeUnit | Referenced_Element_Type | Referenced_Element_FullName | Line | Relation_Type |
---|---|---|---|---|
CREATE VIEW | CREATE FUNCTION | FUNCTION1 | 10 | SELECT - COLUMN |