OBJECT_DEFINITION (Transact-SQL)
Retorna o texto de origem de Transact-SQL da definição de um objeto especificado.
Sintaxe
OBJECT_DEFINITION ( object_id )
Argumentos
- object_id
É o ID do objeto a ser usado. object_id é int, e considera-se que representa um objeto no contexto de banco de dados atual.
Tipos de retorno
nvarchar(max)
Exceções
Retorna NULL para erro ou caso um chamador não tenha permissão para exibir o objeto.
Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais ele recebeu permissão. Isso significa que as funções internas emissoras de metadados, como OBJECT_DEFINITION, podem retornar NULL se o usuário não tiver permissão no objeto. Para obter mais informações, consulte Configuração de visibilidade de metadados e Solucionando problemas de visibilidade de metadados.
Comentários
O Mecanismo de banco de dados do SQL Server entende que object_id está no contexto de banco de dados atual. O agrupamento da definição de objeto sempre corresponde ao do contexto de banco de dados que está fazendo a chamada.
OBJECT_DEFINITION se aplica aos tipos de objeto seguintes:
C = Verificar restrições
D = Padrão (restrição ou autônomo)
P = Procedimento armazenado SQL
FN = Função escalar SQL
R = Regra
RF = Procedimento do filtro de replicação
TR = Gatilho SQL (gatilho DML com escopo de esquema, ou gatilho DDL no banco de dados ou no escopo de servidor)
IF = Função SQL com valor de tabela embutida
TF = Função SQL com valor de tabela
V = Exibição
Permissões
Definições de objeto de sistema são publicamente visíveis. A definição de objetos de usuário é visível ao proprietário do objeto e aos que possuírem qualquer uma das seguintes permissões: ALTER, CONTROL, TAKE OWNERSHIP ou VIEW DEFINITION. Estas permissões são mantidas implicitamente por membros das funções de banco de dados fixas db_owner, db_ddladmine db_securityadmin.
Exemplos
A. Retornando o texto de origem de um objeto definido pelo usuário
O exemplo a seguir retorna a definição de um gatilho definido pelo usuário, uAddress, no esquema Person. A função interna OBJECT_ID é usada para retornar a ID do objeto do gatilho à instrução OBJECT_DEFINITION.
USE AdventureWorks2008R2;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.uAddress')) AS [Trigger Definition];
GO
B. Retornando o texto de origem de um objeto de sistema
O exemplo a seguir retorna a definição do procedimento armazenado do sistema sys.sp_columns.
USE AdventureWorks2008R2;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'sys.sp_columns')) AS [Object Definition];
GO