Y a-t-il un moyen, dans une procédure stockée, de faire référence à son propre nom? Dites que je veux qu'il imprime son propre nom, mais sans coder en dur le nom dans la procédure stockée. Existe-t-il un moyen tricheur d'obtenir le nom ou l'identifiant à partir de la procédure même sans utiliser le nom réel pour trouver l'information?Une procédure stockée MS/Transact-SQL peut-elle rechercher son propre nom?
Répondre
Essayez:
SELECT OBJECT_NAME(@@PROCID)
@@ PROCID renvoie l'ID d'objet du module SQL en cours. OBJECT_NAME traduit un ID d'objet en son nom. Les deux sont disponibles à partir d'au moins la version 7 à 2008 de SQL Server.
Vous cherchez @@ PROCID et OBJECT_NAME-à-dire
select @procName=OBJECT_NAME(@@PROCID)
Aucune raison pour laquelle vous ne devriez pas recevoir votre réponse simplement parce que vous avez manqué quelques secondes. – TheTXI
Gents, je suis touché :) –
Nom du proc/func
Select OBJECT_NAME(@@PROCID);
Autres choses intéressantes
Select * From sys.sysprocesses Where spid = @@SPID
Voici un code de bricoler je l'ai écrit , s'exécutant sur une base de données SQL Server 2005 pour jouer avec la fonction OBJECT_NAME (@@ PROCID).
Exécutez cette première section, pour créer une table de journal
CREATE TABLE Diagnostics_Log
(
sprocName sysname,
WhenRun datetime,
Comment Varchar(160) NULL
)
- =========================== =============
Ensuite, exécutez ce T-SQL pour créer quelques versions du même sproc, en ajoutant un suffixe numérique à chaque fois.
CREATE PROC dg_test_name_logging
@Comment Varchar(160)
AS
declare @Sprocname sysname
select @sprocName = OBJECT_NAME(@@PROCID)
PRINT @@PROCID
print @sprocname
insert into Diagnostics_Log VALUES (@sprocname, GetDate(), @Comment)
GO
- ========== Lancez ensuite cette section
exec dg_test_name_logging 'this is the first run'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging1 'this is my second comment'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging2 'yet another comment'
WAITFOR DELAY '00:00:02:123'
exec dg_test_name_logging3 'amazing'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging4 'I''ll be gobsmacked if this works'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging5 'It''s ALIVE !!!'
select * from Diagnostics_Log
pourrait être utile pour l'enregistrement lorsque sprocs ou vues sont exécutées ou accessibles.
nom_objet() ne spécifie pas lui-même le schéma de l'objet actuel. Pour ce faire:
print object_schema_name(@@PROCID) + '.' + object_name(@@PROCID)
- 1. Une méthode cfc ColdFusion peut-elle déterminer son propre nom?
- 2. Marquage du nom de la procédure stockée
- 3. Créer son propre codage
- 4. Exécuter une procédure stockée dans une vue?
- 5. Nom de la table DataSet d'une procédure stockée
- 6. paramètres de procédure stockée MySQL
- 7. Recherche d'une procédure stockée
- 8. procédure stockée retourne varchar
- 9. Quelle est la meilleure façon de rechercher une table DB à l'aide d'une procédure stockée?
- 10. mysql-procédure stockée:
- 11. Réinitialiser @@ procédure stockée FETCH_STATUS
- 12. Comment supprimer les résultats d'une procédure stockée à partir d'une procédure stockée?
- 13. DESCENTE/ASCENDING paramètre à une procédure stockée
- 14. Passer un tableau dans une procédure stockée
- 15. Exécution d'un FuncView dans une procédure stockée
- 16. SubSonic Retour ExecuteSingle pour une procédure stockée
- 17. Comment appeler une procédure stockée depuis iReport?
- 18. comment exécuter une procédure stockée en continu?
- 19. sql2000 boucle dans une procédure stockée
- 20. Procédure stockée dans une instruction d'insertion
- 21. Syntaxe de procédure stockée
- 22. Erreur de procédure stockée
- 23. procédure stockée supprimer requête
- 24. structure de procédure stockée
- 25. Problème de procédure stockée SQL Server appelant une autre procédure stockée
- 26. Une DLL Windows peut-elle récupérer son propre nom de fichier?
- 27. Impossible de trouver l'erreur de procédure stockée
- 28. DbNull.Value Paramètre de procédure stockée?
- 29. Appel de la procédure stockée
- 30. S'agit-il d'une procédure stockée?
D'oh! Secondes trop tard. Touche! +1 –
+1 Fonctionne sur mon ordinateur: A propos, PROCID fonctionne-t-il pour toutes les versions de SQL Server? Je veux dire, au moins pour SQL Server 2k/2k5/2k8? – Sung
Oui, au moins 2000 vers le haut. Je ne me souviens pas si cela fonctionnait sur 6.5 ou 7. –