2011-05-17 16 views
60

क्या एमएस एसक्यूएल सर्वर में वर्तमान संग्रहीत प्रक्रिया का नाम प्राप्त करना संभव है? हो सकता है कि कोई सिस्टम वैरिएबल या GETDATE() जैसे फ़ंक्शन हो?वर्तमान निष्पादन प्रक्रिया का नाम

उत्तर

92

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

SELECT OBJECT_NAME(@@PROCID) 

अद्यतन: यह आदेश अभी भी एसक्यूएल सर्वर पर मान्य है 2016

+0

यह भी एसक्यूएल एक्सप्रेस 2008 R2 के लिए काम करते हैं ? – gbbosmiya

+0

हां, यह करता है: http://technet.microsoft.com/en-us/library/ms174408.aspx –

+4

यह ध्यान देने योग्य है कि लौटाया गया मूल्य SYSNAME प्रकार है। – Buggieboy

13

आप OBJECT_NAME(@@PROCID)

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

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

+1 स्कीमा महत्वपूर्ण है। –

+2

यदि आप इसे एक temp प्रो के अंदर उपयोग करते हैं, तो यह स्कीमा नाम पुनर्प्राप्ति के साथ या उसके बिना, NULL देता है। 1 proc "सामान्य" है, 2 अस्थायी है, इस कोड में: 'TRAN GO शुरू बनाएं PROC utility.TempProc के रूप में चयन OBJECT_SCHEMA_NAME (@@ PROCID) + + OBJECT_NAME (@@ PROCID) GO '।' EXEC utility.TempProc GO ROLLBACK GO शुरू TRAN GO PROC उपयोगिता बनाएँ। # TempProc के रूप में चयन OBJECT_SCHEMA_NAME (@@ PROCID) + '।' + OBJECT_NAME (@@ PROCID) EXEC उपयोगिता GO। # TempProc जाओ रोलबैक जाओ ' – SAinCA

2

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

select name 
from tempdb.sys.procedures 
where object_id = @@procid 
संबंधित मुद्दे