¿Hay alguna manera dentro de un procedimiento almacenado para que haga referencia a su propio nombre? Digamos que quiero que imprima su propio nombre, pero sin codificar el nombre en el procedimiento almacenado. ¿Hay alguna forma engañosa de obtener el nombre o la identificación dentro del procedimiento mismo sin usar el nombre real para encontrar la información?¿Puede un procedimiento almacenado de MS/Transact-SQL buscar su propio nombre?
Respuesta
Probar:
SELECT OBJECT_NAME(@@PROCID)
@@ procid devuelve el ID de objeto del módulo de SQL actual. OBJECT_NAME traduce una ID de objeto a su nombre. Ambos están disponibles desde al menos la versión 7 a 2008 de SQL Server.
Usted está buscando @@ procid y OBJECT_NAME es decir
select @procName=OBJECT_NAME(@@PROCID)
No hay razón por la que no deba votar por su respuesta solo porque se perdió por segundos. – TheTXI
Gents, estoy conmovido :) –
Nombre del proc/func
Select OBJECT_NAME(@@PROCID);
otras cosas interesantes
Select * From sys.sysprocesses Where spid = @@SPID
Aquí hay un código que escribí Tinker , corriendo contra una base de datos SQL Server 2005 para jugar con la función OBJECT_NAME (@@ PROCID).
Ejecutar esta sección en primer lugar, para crear una tabla de registro
CREATE TABLE Diagnostics_Log
(
sprocName sysname,
WhenRun datetime,
Comment Varchar(160) NULL
)
- =========================== =============
A continuación, ejecute este T-SQL para crear algunas versiones del mismo sproc, agregando un sufijo numérico cada vez.
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
- ========== A continuación, ejecute esta sección
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
podría ser útil para el registro cuando sprocs o puntos de vista se ejecutan o se puede acceder.
object_name() por sí solo no especifica el esquema del objeto actual. Para hacer eso:
print object_schema_name(@@PROCID) + '.' + object_name(@@PROCID)
- 1. Buscar procedimiento almacenado por nombre
- 2. ¿Puede un método ColdFusion cfc determinar su propio nombre?
- 3. consulta de Oracle para buscar privilegios en un procedimiento almacenado
- 4. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 5. Nombre de objeto inválido - Procedimiento almacenado
- 6. ¿Cómo suprimo los resultados de un procedimiento almacenado dentro de un procedimiento almacenado?
- 7. ¿puede una función actionscript encontrar su propio nombre?
- 8. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 9. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 10. Cómo guardar un procedimiento almacenado?
- 11. Buscar procedimiento almacenado que se inserta en una tabla específica
- 12. Cambiar el nombre de un procedimiento almacenado en SQL Server
- 13. ¿Cómo programar un procedimiento almacenado?
- 14. Transacción de procedimiento almacenado
- 15. ¿Se puede configurar MAXDOP solo para un procedimiento almacenado?
- 16. ¿Puede un archivo DLL de Windows recuperar su propio nombre de archivo?
- 17. Este objetivo puede incluir su propio producto
- 18. ¿Puede un módulo tener su propio archivo de configuración?
- 19. Python: ¿un objeto puede ser de su propio tipo?
- 20. ¿Puedo establecer un esquema predeterminado dentro de un procedimiento almacenado?
- 21. Magento: Crear procedimiento almacenado
- 22. Devolviendo múltiples valores de un procedimiento almacenado
- 23. Llamar a un procedimiento almacenado en un procedimiento almacenado en MySQL
- 24. hibernar y procedimiento almacenado
- 25. Procedimiento almacenado roto guardado
- 26. ¿Por qué no se puede usar la instrucción INSERT EXEC dentro de un procedimiento almacenado llamado por otro procedimiento almacenado?
- 27. ¿Cómo desactivo los resultados de la consulta al ejecutar un procedimiento almacenado desde un procedimiento almacenado?
- 28. Nombre de procedimiento almacenado dinámico linq a sql
- 29. IF/ELSE Procedimiento almacenado
- 30. Desaparición del procedimiento almacenado
D'oh! Segundos demasiado tarde. Touche! +1 –
+1 Funciona en mi máquina: por cierto, ¿funciona @@ PROCID para todas las versiones de SQL Server? Quiero decir, al menos para SQL Server 2k/2k5/2k8? – Sung
Sí, al menos 2000 en adelante. No puedo recordar si esto solía funcionar en 6.5 o 7. –