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?
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'
select definition
from sys.sql_modules
where object_name(object_id) like 'functionName'
--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)
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
où NOM D'OBJET pourrait être votre nom d'objet tel que Procédure stockée/Fonction/Déclencheur ... etc. nom
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'.
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.