2011-05-17 17 views

Respuesta

92

Usted puede intentar esto:

SELECT OBJECT_NAME(@@PROCID) 

Actualización: Este comando es todavía válida en SQL Server 2016.

+0

También funciona para SQL Express 2008 R2 ? – gbbosmiya

+0

Sí, lo hace: http://technet.microsoft.com/en-us/library/ms174408.aspx –

+4

Vale la pena señalar que el valor devuelto es del tipo SYSNAME. – Buggieboy

13

Usted puede utilizar OBJECT_NAME(@@PROCID)

Devuelve el identificador de objeto (ID) de el módulo Transact-SQL actual. Un módulo Transact-SQL puede ser un procedimiento almacenado , función definida por el usuario o activador .

48
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID) 
+6

+1 El esquema es importante. –

+2

Si usa esto dentro de un Proc temp, devuelve NULL, con o sin la recuperación de nombre de esquema. Primero proc es "normal", segundo es temporal, en este código: 'COMENZAR TRAN GO CREATE PROC utility.TempProc AS SELECT OBJECT_SCHEMA_NAME (@@ procid) + + OBJECT_NAME (@@ procid) IR ''. EXEC utility.TempProc GO ROLLBACK GO COMENZAR TRAN IR CREATE utilidad PROC. # TempProc AS SELECT OBJECT_SCHEMA_NAME (@@ procid) + ''. + OBJECT_NAME (@@ procid) IR utilidad EXEC. # TempProc GO ROLLBACK GO' – SAinCA

2

En el caso específico en el que está interesado en el nombre de la procedimiento almacenado temporal que se está ejecutando, lo puede conseguir a través de:

select name 
from tempdb.sys.procedures 
where object_id = @@procid 
Cuestiones relacionadas