Sunday 15 June 2014

sql - Stored Procedure Result? -


मेरे पास एक संग्रहीत कार्यविधि है जो अन्य संग्रहित प्रक्रियाओं को कॉल करती है और फिर संदेश लौटाता है हालांकि, एसपी उद्देश्य से काम नहीं कर रहा है:

  वैकल्पिक प्रक्रिया [dbo]। [Sp_Test] - यहां पर संग्रहीत कार्यविधि के लिए पैरामीटर जोड़ें @ID int, @UN nvarchar (30), @ पीडब्लू नववर्कर (30), @ मेसेज नवरर्चार (50) आउट प्रारंभ से - SET NOCOUNT पर अतिरिक्त परिणाम सेट को रोकने के लिए जोड़ा गया - SELECT कथन के साथ हस्तक्षेप। सेट नाकनेट चालू; - वेरिएबल्स @ वाइल्डयूसर नैवर्चार (75); घोषित @Current nvarchar (50); घोषणा @ लॉग बिट = 0; घोषणा @ लॉगडटाईम datetime2 = getdate (); निष्पादित @ValidUser = sp_UserValidation @ID, @UN, @PW, @ValidUser; --sp_UserValidation 'सफलता' देता है अगर 'वालिडयूसर =' सफल 'शुरू - 2) वैध खाता निष्पादन @Current = sp_ValidateCurrent @ID, @Current; --sp_ValidateCurrent रिटर्न 'खाता चालू है' अगर @एसीआरआर = 'खाता चालू है' सेट करें @Message = 'सफल' सेट करें; अगर एंड्रॉइड शुरू हो जाए तो @Current = 'ग्रेस' सेट करें @Message = 'अनुग्रह'; एंड एल्स आरंभ करें यदि @एकाउंटसुरेंट = 'बिलींग नहीं है' सेट सेट करें @Message = 'सफल'; एंड एल्स सेट @ मेसेज = 'असफलता' एंड एंड एंड एल्स सेट @ मेसेज = 'मान्य नहीं है।'; @ संदेश चुनें; END   

मेरे तर्क के मुताबिक, @ संदेश को 'सफलता' के बराबर होना चाहिए, हालांकि 'मान्य नहीं' वापस किया जा रहा है। मैं क्या गलत कर रहा हूं? कृपया मुझे बताओ। धन्यवाद।

यहाँ sp_UserValidation के लिए तर्क है:

  वैकल्पिक प्रक्रिया [dbo]। [Sp_UserValidation] - यहां संग्रहीत कार्यविधि के लिए पैरामीटर जोड़ें @ID int, @UN नवरचार (30), पीडब्लू नर्वचार (30), @ ओटपुट नैवर्चार (50) बाहर से आरंभ करें; @ यूज़रकैंट int = 0 घोषित करें; @ अकाउंट लॉक बिट = 1 घोषित करें; @FailedAttempts int = 4 घोषित करें; घोषित करें @ अधिकतम आशय int = 3; घोषणा @LastLogin datetime2; सेट @ आउटपुट = 'त्रुटि: कृपया पुनः प्रयास करें'; - 1) उस खाता कोड / उपयोगकर्ता नाम / पासवर्ड संयोजन की जांच करें, उपयोगकर्ता नाम = @ एआईडी और उपयोगकर्ता नाम = @ यूएन और पासवर्ड = @ पीडब्लूएसईआर से यूजर नाम = गिनती (*) चुनें। यदि @UserCount = 1 शुरू होता है - 2) जांचें कि उपयोगकर्ता खाता लॉक नहीं है - 2. ए) अधिकतम स्वीकृत प्रयास प्राप्त करें @MaxAttempts = Value का चयन करें tbl_sysTABLE से जहां शीर्षक = 'MaxUserAttempts'; - 2. बी) अंतिम सफल लॉगिन के बाद से असफल प्रयासों को प्राप्त करें - अंतिम सफल लॉगिन तिथि प्राप्त करें @LastLogin = लॉगिन करें tblLOG से टाइमटाइम जहां आईडी = @ID और उपयोगकर्ता नाम = @UN और लॉगिनडेटाइम (अधिकतम (लॉग-इन टाइमटाइम) को tblLOG से चुनें आईडी = आईडी और उपयोगकर्ता नाम = @UN और संदेश = 'सफलता'); - असफल प्रयासों को प्राप्त करें count @failedAttempts = count (*) को tblLOG से चुनें, जहां LoginDatetime & gt; @अंतिम लॉगइन; - 2. सी) यदि असफल प्रयास & gt; अधिकतम स्वीकृत प्रयास, खाता बंद है, अन्य खाता लॉक नहीं है। अगर @ फ़ेलेस्ट लेफ्ट्स & lt; @MaxAttempts प्रारंभ करें सेट करें @output = 'सफलता'; एंड एल्स सेट @ आउटपुट = 'उपयोगकर्ता खाता लॉक है।'; एंड का चयन करें @ आउटपुट; END    

मुझे लग रहा है कि आप चाहते हैं:

  SP_UserValidation @ID, @UN, @PW, @ValidUser आउटपुट निष्पादित करें;   

संग्रहित प्रक्रिया स्ट्रिंग्स वापस नहीं करती हैं।

यह संदर्भ है कि वापसी मान एक पूर्णांक हैं मुझे आश्चर्य है कि जब आप इसे लिखते हैं तो यह वाक्यविन्यास त्रुटि उत्पन्न नहीं करता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि वापसी का उपयोग उन कार्यों में भी किया जाता है जो किसी प्रकार वापस कर सकते हैं।

मैंने हमेशा एक स्थिति संकेतक के रूप में वापसी का उपयोग किया है आपके मामले में, आप एक वेरिएबल पास कर रहे हैं और फिर इसका इस्तेमाल कर रहे हैं, इसलिए यह समझ में आता है कि यह एक आउटपुट पैरामीटर होगा।

No comments:

Post a Comment