वर्तमान निष्पादन प्रक्रिया नाम


जवाबों:


143

आप यह कोशिश कर सकते हैं:

SELECT OBJECT_NAME(@@PROCID)

अद्यतन: यह आदेश अभी भी SQL Server 2016 पर मान्य है।


4
यह ध्यान देने योग्य है कि लौटाया गया मूल्य SYSNAME का है।
बुग्गीबॉय

कार्य प्रक्रिया के लिए क्या करें? कोई उपाय? कृपया मदद करें
विनय सिन्हा

1
अभी भी एसक्यूएल परोसें 2012 में मान्य है
पिमता

2
SQL सर्वर 2016 पर अभी भी मान्य है
Fka

सत्र या वैश्विक अस्थायी संग्रहीत कार्यविधियों के लिए काम नहीं करता है।
अंजीह

81
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)

3
यदि आप इसका उपयोग एक अस्थायी प्रोक के अंदर करते हैं, तो यह स्कीमा नाम पुनर्प्राप्ति के साथ या बिना NULL देता है। 1 proc "सामान्य" है, दूसरा इस कोड में है: BEGIN TRAN GO CREATE PROC utility.TempProc AS SELECT OBJECT_SCHEMA_NAME(@@PROCID)+'.'+OBJECT_NAME(@@PROCID) GO EXEC utility.TempProc GO ROLLBACK GO BEGIN TRAN GO CREATE PROC utility.#TempProc AS SELECT OBJECT_SCHEMA_NAME(@@PROCID)+'.'+OBJECT_NAME(@@PROCID) GO EXEC utility.#TempProc GO ROLLBACK GO
SAINCA

15

आप OBJECT_NAME (@@ PROCID) का उपयोग कर सकते हैं

वर्तमान Transact-SQL मॉड्यूल के ऑब्जेक्ट पहचानकर्ता (ID) को लौटाता है। एक लेनदेन-एसक्यूएल मॉड्यूल एक संग्रहीत प्रक्रिया, उपयोगकर्ता-परिभाषित फ़ंक्शन या ट्रिगर हो सकता है।


6

उस विशिष्ट मामले में जहां आप वर्तमान में अस्थायी संग्रहीत कार्यविधि को निष्पादित करने के नाम पर रुचि रखते हैं , आप इसे प्राप्त कर सकते हैं:

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

वर्तमान में निष्पादित अस्थायी संग्रहीत कार्यविधि का नाम खोजने के लिए आप SQL सर्वर में स्वीकृत उत्तर का उपयोग नहीं कर सकते हैं:

create procedure #p
as
select object_name(@@PROCID) as name
go
exec #p


name
--------------------------------------------------------------------------------------------------------------------------------
NULL

(1 row affected)

पुष्टि कर सकते हैं, सत्र-
स्कूपिंग

1
इस तथ्य के अलावा, यह सही है: अस्थायी प्रक्रियाएं कौन बनाएगा ?? :-D
तारे साल

0

NULLसंग्रहित प्रक्रिया का स्कीमा और नाम प्राप्त करने से पहले आप देख सकते हैं ।

इसका मतलब है कि आप (वैश्विक) अस्थायी संग्रहीत प्रक्रियाओं के लिए भी सही डेटा प्राप्त कर सकते हैं (बड़ा बनाने के लिए छवि पर क्लिक करें):

गैर-अस्थायी, अस्थायी और वैश्विक अस्थायी संग्रहीत प्रक्रियाओं के नाम

USE [master]; --so we can test temp sprocs without cheating by being in tempdb.
GO

BEGIN TRAN;
GO

CREATE PROC dbo.NotTempProc
AS
BEGIN
    SELECT CASE
        WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
        THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
        ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
        END AS ProcName;
END
GO

EXEC dbo.NotTempProc;
GO

CREATE PROC dbo.#TempProc
AS
BEGIN
    SELECT CASE
        WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
        THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
        ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
        END AS ProcName;
END
GO

EXEC dbo.#TempProc;
GO

CREATE PROC dbo.##GlobalTempProc
AS
BEGIN
    SELECT CASE
        WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
        THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
        ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
        END AS ProcName;
END


GO

EXEC dbo.##GlobalTempProc;
GO

ROLLBACK;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.