Questo articolo presenta 4 modi di utilizzare T-SQL per ottenere la definizione di una vista in SQL Server.

La definizione della vista è l’istruzione T-SQL effettiva utilizzata per creare la vista.

Esempio 1 – Il sistema.sql_modules System Catalog View

Lasys.sql_modules system catalog view restituisce una riga per ogni oggetto che è un modulo definito dal linguaggio SQL in SQL Server.,

In altre parole, è possibile utilizzare questa vista per restituire informazioni su oggetti di vario tipo, tra cui funzioni, stored procedure e, naturalmente, viste.

Una delle colonne restituite con questa vista è chiamatadefinition. Come suggerisce il nome, questo restituisce la definizione dell’oggetto.

SELECT definitionFROM sys.sql_modulesWHERE object_id = object_id('Website.Customers');

Risultato:

Ho usato un’interfaccia a riga di comando (CLI) con questo esempio, quindi il risultato è ben formattato.,

Se si utilizza una GUI (come SSMS o Azure Data Studio) per restituire i risultati in una griglia, la definizione verrà probabilmente restituita in una riga lunga in una singola cella. In questi casi è necessario fare un po ‘ di lavoro in più se si desidera che venga visualizzato in un formato più leggibile. In alternativa, è possibile utilizzare il metodosp_helptext di seguito.

Esempio 2 – La stored Procedure di sistema sp_helptext

Un altro metodo per restituire la definizione di una vista è usare lasp_helptext stored procedure di sistema., Oltre a restituire la definizione per una vista, può anche restituire la definizione di una regola definita dall’utente, predefinita, stored procedure T-SQL non crittografata, funzione Transact-SQL definita dall’utente, trigger, colonna calcolata, CHECK vincolo o oggetto di sistema come una stored procedure di sistema.

Come menzionato nell’esempio precedente, questa stored procedure visualizza la definizione della vista su più righe. Ogni riga contiene 255 caratteri della definizione T-SQL.,

Esempio:

EXEC sp_helptext 'Website.Customers';

Ecco il risultato che ottiene quando si utilizza una GUI (Azure Dati di Studio):

Ed ecco cosa ottengo usando la mia interfaccia a riga di comando:

Questa volta il risultato sarà migliore quando si usa la GUI.

Esempio 3 – La funzione OBJECT_DEFINITION ()

Un altro modo per restituire la definizione di una vista è usare la funzioneOBJECT_DEFINITION(). Come con i metodi precedenti, questo metodo può anche restituire la definizione di altri tipi di oggetto.,

Ecco un esempio di utilizzo di questa funzione:

SELECT OBJECT_DEFINITION( OBJECT_ID('Website.Customers') ) AS ;

Risultato:

Questa volta è più facile da leggere nella mia CLI rispetto alla mia griglia GUI.

Esempio 4 – Le VISTE System Information Schema View

LaVIEWS system information schema view può anche restituire la definizione di una vista. Una differenza tra questo metodo e i precedenti è che la vista dello schema di informazioni VIEWS è limitata alle sole viste (come suggerisce il nome).

Restituisce un gruppo di colonne, una delle quali è la definizione della vista., Quindi possiamo nominare quella colonna per restituire solo la definizione:

SELECT VIEW_DEFINITIONFROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_NAME = 'Customers';

Risultato:

Si noti che la colonnaVIEW_DEFINITION in questa vista di sistema ha una lunghezza massima di nvarchar(4000). Per le definizioni di visualizzazione più grandi di questa, è possibile utilizzare la funzioneOBJECT_DEFINITION() nell’esempio precedente.

Il valore restituito di OBJECT_DEFINITION() è nvarchar(max), quindi non ha la limitazione dei caratteri della colonna VIEW_DEFINITION (che come accennato, è nvarchar(4000)).