SQL डेवलपर में SQL सर्वर संग्रहीत प्रक्रिया निष्पादित करने के लिए कैसे?


148

मुझे एक SQL सर्वर डेटाबेस के लिए एक उपयोगकर्ता खाता दिया गया है जिसमें केवल संग्रहीत प्रक्रिया को निष्पादित करने के लिए विशेषाधिकार हैं। मैंने JTDS SQL सर्वर JDBC जार फ़ाइल को SQL Developer में जोड़ा और इसे थर्ड पार्टी JDBC ड्राइवर के रूप में जोड़ा। मैं सफलतापूर्वक SQL सर्वर डेटाबेस में प्रवेश कर सकता हूं। मुझे यह सिंटैक्स प्रक्रिया चलाने के लिए दिया गया था:

EXEC proc_name 'paramValue1' 'paramValue2'

जब मैं इसे कथन या स्क्रिप्ट के रूप में चलाता हूं, तो मुझे यह त्रुटि मिलती है:

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

मैंने कथन को लपेटने की कोशिश की BEGIN/END, लेकिन वही त्रुटि मिली। क्या SQL डेवलपर से प्रक्रिया को कॉल करना संभव है? यदि हां, तो मुझे किस सिंटैक्स का उपयोग करने की आवश्यकता है?

जवाबों:


231

आपको EXEC क्लॉज़ की आवश्यकता नहीं है। बस उपयोग करें

proc_name paramValue1, paramValue2

(और आपको मिस्नर के रूप में अल्पविराम की आवश्यकता है)


8
क्या इस नियम के कोई अपवाद हैं? मुझे लगता है कि "sp_dev_mystoredproc 'के पास" गलत सिंटैक्स "त्रुटि हो रही है। इस सिंटैक्स के साथ निष्पादित करते समय।
नोज़ोलिलो

2
EXEC पूर्व proc_name मेरे मामले में आवश्यक है
César León

3
मैं दृढ़ता से @MuriloKunze द्वारा सुझाए गए लिंक पर जाने की सलाह दूंगा। जानना बहुत जरूरी है।
RBT

@RBT किसका लिंक कहाँ है?
सरवाइड

72

आप इससे चूक रहे हैं ,

EXEC proc_name 'paramValue1','paramValue2'

1
मैंने लापता कॉमा को जोड़ा, लेकिन फिर भी, वही त्रुटि मिलती है।
18

आपके पैरामीटर क्या हैं अगर वे varchar हैं तो केवल आपको उद्धरण चिह्नों की आवश्यकता है ... इसके अलावा कुछ भी नहीं सोच सकते हैं ... आप यह कोशिश कर सकते EXEC proc_nameहैं कि इसे केवल एक नई विंडो में चलाएं- और देखें कि क्या यह आपसे पूछता है दूसरा पैरामीटर ... तो कम से कम आप जानते हैं कि आपका सिक्सैक्स सही है..यदि आपके काम का मतलब यह नहीं है कि आपके पास सही संग्रहीत नाम नहीं है ... पूर्ण योग्य नाम का प्रयास करें ..
विशाल

मैंने दूसरा पैरामैटर हटा दिया और अभी भी वही त्रुटि है। मुझे नहीं लगता कि यह बिल्कुल प्रक्रिया चल रही है। EXEC कमांड को सिंटैक्स हाइलाइट नहीं किया गया है, इसलिए मुझे अनुमान है कि डेवलपर SQL सर्वर डेटाबेस से कनेक्शन होने के बावजूद इसे पहचान नहीं पाता है। लेकिन मुझे इसकी पुष्टि / खंडन करने के लिए वेब पर कुछ भी नहीं मिल रहा है।
sdoca

कुछ रिकॉर्ड्स का चयन करने और कुछ सरल आदेशों को निष्पादित करने की कोशिश करें, अगर कुछ भी काम करता है! .. शुभकामनाएँ ..
विशाल

दुर्भाग्य से, मेरे उपयोगकर्ता के पास संग्रहीत कार्यविधि को चलाने के लिए केवल विशेषाधिकार हैं।
sdoca

18

आपको यह करने की आवश्यकता है:

    exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'


0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

यदि संग्रहीत कार्यविधि उद्देश्य एक INSERTऐसी तालिका पर प्रदर्शन करना है जिसमें एक पहचान क्षेत्र घोषित किया गया है, तो इस परिदृश्य में, फ़ील्ड @paramValue1को घोषित किया जाना चाहिए और बस मान 0 को पास करना चाहिए, क्योंकि यह ऑटो-इंक्रीमेंट होगा।


0

मुझे पता है कि यह पुराना है। लेकिन इससे दूसरों की मदद हो सकती है।

मैंने BEGIN / END के बीच SP कॉलिंग फ़ंक्शन जोड़ा है। यहां एक वर्किंग स्क्रिप्ट है।

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP 
    where Id = @Id 

-3

यदि आपको proc_name 'paramValue1' , 'paramValue2'... एक ही समय में अपनी संग्रहीत प्रक्रिया को पूरा करने की आवश्यकता है , तो आप एक से अधिक क्वेरी को निष्पादित कर रहे हैं जैसे एक चयनित क्वेरी और संग्रहीत प्रक्रिया को जोड़ना होगा select * from tableName EXEC proc_name paramValue1 , paramValue2...


-8

संग्रहीत प्रक्रियाओं को नीचे के सिंटैक्स का उपयोग करके sql डेवलपर टूल में चलाया जा सकता है

बेगिन प्रक्रियायुरनाम (); समाप्त;

अगर कोई पैरामीटर है तो उसे पास करना होगा।


आप एक स्टेटमेंट ब्लॉक द्वारा किसी एक कथन को क्यों संलग्न कर रहे हैं? आपको इसे केवल टी-एसक्यूएल बयानों की एक श्रृंखला के लिए करना होगा ।
डेविड फेरेंस्की रोगोजान

-11
Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.

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