क्या आपने इसे फिर से चलाने का प्रयास किया? मुझे संदेह है कि निष्पादन कॉल अब आपकी प्रक्रिया के मुख्य भाग का हिस्सा है। कैसा रहेगा:
ALTER PROCEDURE dbo.wildcard_name
@userName NVARCHAR(8) = '%'
AS
BEGIN
SET NOCOUNT ON;
SELECT userId, userName
FROM dbo.user
WHERE userName LIKE @userName;
END
GO -- <-- this is important! It tells SSMS that your procedure has ended!
EXEC dbo.wildcard_name N'n%';
अन्य सुझावों का एक समूह जिसका उल्लेख नहीं करने के लिए मैं क्षमा चाहता हूँ:
- ऑब्जेक्ट बनाते और कॉल करते समय आपको हमेशा स्कीमा उपसर्ग निर्दिष्ट करना चाहिए। तो
CREATE PROCEDURE dbo.wildcard_name
,EXEC dbo.wildcard_name
, आदि. - उम्मीद है कि आपका प्रोडक्शन कोड
SELECT *
. का इस्तेमाल नहीं करेगा । - अपने पैरामीटर के लिए nchar के बजाय nvarchar का उपयोग करने की अत्यधिक अनुशंसा करें।
- अपनी प्रक्रिया के मुख्य भाग को
BEGIN
. से लपेटें /END
और इसे और अधिक पठनीय बनाने के लिए इंडेंटिंग का उपयोग करने से न डरें। - आप आमतौर पर
SET NOCOUNT ON;
. का उपयोग करना चाहेंगेn row(s) affected
आपके परिणामों में हस्तक्षेप करने वाले संदेश। NVARCHAR
पैरामीटर में एक एन उपसर्ग होना चाहिए (हालांकि मैं उलझन में हूं कि आपvarchar
. के बीच वैकल्पिक क्यों कर रहे हैं औरnchar
पहली जगह में - यह दो शिफ्ट हैं जहां मुझे शून्य की उम्मीद है)।- संयोजन के आधार पर (और क्या आप चाहते हैं कि खोज केस संवेदनशील हो), आपको
COLLATE
का उपयोग करके अपना जहां क्लॉज बदलना पड़ सकता है खंड।
संपादित करें ऐसा लगता है कि यह मेरे लिए ठीक काम करता है, इसलिए कृपया बताएं कि आप अलग तरीके से क्या कर रहे हैं (और क्या "काम नहीं किया" का मतलब अभी भी खाली परिणाम है, या कुछ और?):