माइक्रोसॉफ्ट object_id()
फ़ंक्शन का उपयोग की सिफारिश की है, इसलिए जैसे:
IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[YourProcedure]
GO
।
object_id()
मालिक संघर्षों को हल करने में मदद करता है। यदि आप
SELECT name FROM sysobjects WHERE name = 'my_procedure'
करते हैं, तो आप एक ही नाम के साथ कई अलग-अलग प्रक्रियाएं देख सकते हैं - सभी अलग-अलग मालिकों के लिए।
लेकिन, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]')
केवल उस नाम के एक से अधिक प्रक्रिया मौजूद होने पर ही आपको वर्तमान मालिक/उपयोगकर्ता के लिए दिखाएगा।
फिर भी, हमेशा ऑब्जेक्ट स्वामी निर्दिष्ट करें (डिफ़ॉल्ट dbo
है)। न केवल यह दुष्प्रभावों से बचता है, यह थोड़ा तेज़ भी है।
स्रोत
2010-08-03 00:10:06
मैं एमएस SQL 2012 का उपयोग कर रहा है, इस वाक्य रचना मेरे लिए काम किया ड्रॉप प्रक्रिया [dbo]। [YourProcedure] –