2010-08-02 13 views
22

शीर्षक से पता चलता है कि सरल प्रश्न:एसक्यूएल सर्वर 2000 में संग्रहीत प्रक्रिया को छोड़ने के लिए वाक्यविन्यास क्या है?

एसक्यूएल सर्वर 2000 में संग्रहीत प्रक्रिया (एसपी) को छोड़ने के लिए वाक्यविन्यास क्या है, पहले यह जांच कर कि एसपी मौजूद है?

कृपया पूरा कोड प्रदान करें।

उत्तर

33

माइक्रोसॉफ्ट 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 है)। न केवल यह दुष्प्रभावों से बचता है, यह थोड़ा तेज़ भी है।

+0

मैं एमएस SQL ​​2012 का उपयोग कर रहा है, इस वाक्य रचना मेरे लिए काम किया ड्रॉप प्रक्रिया [dbo]। [YourProcedure] –

2
इस तरह

:

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P') 
DROP PROCEDURE my_procedure GO 

आशा है कि मदद करता है!

5

प्रणाली टेबल पर जाए बिना एक थोड़ा सरल तरीका:

IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure 
GO 
-1

SQL SERVER 2008 में, यदि आप एक संग्रहीत प्रक्रिया ड्रॉप करने बस नीचे दिए गए आदेश लिखना चाहते हैं ....

DROP PROC Procedure_name 
DROP PROC dbo.spInsertUser 

यह आशा है कि मदद करता है ..

संबंधित मुद्दे