web-dev-qa-db-fra.com

Comment afficher une fonction stockée - SQL Server

Version: SQLServer 8

Je souhaite afficher le contenu d’une fonction stockée dans sqlserver, c’est-à-dire ce que fait exactement la fonction.

Aucune des options énumérées ici ne fonctionne pour moi. Il ne semble pas exister de base de données/table appelée sys.objects. J'ai pu interroger la table information_table.routines, mais cela ne contient pas la fonction que je cherche. Ma fonction est située dans:

DBName.dbo.functionName

Comment puis-je voir le contenu de cette fonction?

13
etech

Vous pouvez utiliser sp_helptext command pour afficher la définition. Il fait simplement

Affiche la définition d'une règle définie par l'utilisateur, d'une procédure stockée Transact-SQL non chiffrée par défaut, d'une fonction Transact-SQL définie par l'utilisateur, d'un déclencheur, d'une colonne calculée, d'une contrainte CHECK, d'une vue ou d'un objet système tel qu'une procédure stockée système.

Par exemple;

EXEC sp_helptext 'StoredProcedureName'

EDIT: Si votre databases ou server sont différents, vous pouvez le faire en les spécifiant également

EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
20
Sachin
select definition 
from sys.sql_modules 
where object_name(object_id) like 'functionName'
5
Pritesh
--ShowStoredProcedures
select p.[type]
      ,p.[name]
      ,c.[definition]
  from sys.objects p
  join sys.sql_modules c
    on p.object_id = c.object_id
 where p.[type] = 'P'
   --and c.[definition] like '%foo%'
ORDER BY p.[name]
___________

SELECT OBJECT_NAME(object_id) ProcedureName,
       definition
FROM sys.sql_modules
WHERE objectproperty(object_id,'IsProcedure') = 1
ORDER BY OBJECT_NAME(object_id)
2
Howard Rothenburg

Qu'il s'agisse d'une procédure stockée OR Fonction OR, tout objet SQL sous le script donnera la définition complète

USE<Your Data base>
SELECT OBJECT_DEFINITION (OBJECT_ID('<YOUR OBJECT NAME>')) AS ObjectDefinition 

NOM D'OBJET pourrait être votre nom d'objet tel que Procédure stockée/Fonction/Déclencheur ... etc. nom

0
Rinoy Ashokan

Oui ça marche bien.

Pour afficher les procédures stockées ... SELECT * FROM sys.procedures;

et obtenez le nom procduere et utilisez la requête ci-dessous pour la même chose (j'utilise SQuirreL SQL Client version 3.2.0-RC1).

EXEC sp_helptext 'StoredProcedureName'.

0
Harshavardhan

J'utilise plutôt INFORMATION_SCHEMA.ROUTINES:

select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED 
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'

Copiez simplement la colonne ROUTINE_DEFINITION dans une nouvelle fenêtre pour voir le contenu complet.

0
Hiram