2009-08-28 15 views
5

मैं संग्रहीत प्रक्रियाओं के लिए बहुत नया हूं।मैं संग्रहीत प्रक्रिया को एक पैरामीटर का उपयोग करके "डेटासेट" कैसे वापस कर सकता हूं?

कहें कि मेरे पास IDCategory (int) है और मैं इसे संग्रहीत प्रक्रिया में पास करता हूं। सामान्य बात में, यह जाना चाहते हैं:

मुझे एक IDCategory साथ सभी लिस्टिंग IDCategory के बराबर मैं हूँ आप को खोजने के लिए कह सकते हैं।

तो यह कहते हैं कि 3 सूची मिल जाए, और कॉलम के साथ एक टेबल बना होगा:

IDListing, IDCategory, मूल्य, विक्रेता, छवि।

मैं इसे कैसे प्राप्त कर सकता हूं?

+0

यह सवाल mysql और tsql के साथ क्यों टैग किया गया है, क्योंकि उत्तर केवल mssql को संदर्भित करता है? जबरदस्त हंसी। – WoIIe

उत्तर

3

एक संग्रहीत प्रक्रिया आप नीचे दिए गए की तरह कोड के लिए होता है से एक डाटासेट भरने के लिए:

SqlConnection mySqlConnection =new SqlConnection("server=(local);database=MyDatabase;Integrated Security=SSPI;"); 

    SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); 
    mySqlCommand.CommandText = "IDCategory"; 
    mySqlCommand.CommandType = CommandType.StoredProcedure; 
    mySqlCommand.Parameters.Add("@IDCategory", SqlDbType.Int).Value = 5; 

    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); 
    mySqlDataAdapter.SelectCommand = mySqlCommand; 
    DataSet myDataSet = new DataSet(); 
    mySqlConnection.Open(); 
    mySqlDataAdapter.Fill(myDataSet); 

आपका कनेक्शन स्ट्रिंग अलग होगा और वहाँ यह करने के लिए कुछ अलग तरीके हैं, लेकिन यह आप के लिए जा रहा मिलना चाहिए .. .. एक बार जब आप इनमें से कुछ बेल्ट के नीचे प्राप्त करते हैं तो उपयोग वक्तव्य पर एक नज़र डालें। यह संसाधनों को साफ करने में मदद करता है और कोड की कुछ कम लाइनों की आवश्यकता होती है। यह एक संग्रहित प्रक्रिया नाम IDCategory मानता है जिसे एक पैरामीटर कहा जाता है। यह आपके सेटअप में थोड़ा अलग हो सकता है।

CREATE PROC [dbo].[IDCategory] 
    @IDCategory int 
AS 
    SELECT IDListing, IDCategory, Price, Seller, Image 
     FROM whateveryourtableisnamed 
     WHERE IDCategory = @IDCategory 

यहाँ संग्रहित प्रक्रिया बुनियादी बातों पर एक लिंक दिया गया है:: http://www.sql-server-performance.com/articles/dba/stored_procedures_basics_p1.aspx

यहाँ ADO.Net साथ डेटासेट और अन्य मदों पर एक लिंक दिया गया है:

इस मामले में आपके संगृहीत प्रक्रिया कुछ तरह दिखेगा http://authors.aspalliance.com/quickstart/howto/doc/adoplus/adoplusoverview.aspx

2

अपने डेटाबेस में एक टेबल है जिसमें वे 5 फ़ील्ड हैं जिन्हें आप चाहते हैं और पूछते हैं।

उदाहरण:

Select IDListing, IDCategory, Price, Seller, Image 
From [listingtable] --whatever your table is called 
where IDCategoryID = @IDCategoryID 
+0

इसका उपयोग करने से पहले एक चर घोषित करने का क्या फायदा है? क्या ब्रिस्बे 42 का जवाब बेहतर है क्योंकि यह पहले चर घोषित करता है? –

+0

संग्रहीत प्रक्रिया परिभाषा के संदर्भ के बिना, यह उत्तर किसी संग्रहीत प्रक्रिया में वास्तव में उपयोग करने के करीब है। –

2

पूरे संग्रहीत प्रक्रिया:

CREATE PROCEDURE sp_Listing_Get 
    @IDCategory int 
AS 

    DECLARE @categoryid 
     SET @categoryid = @IDCategory 

BEGIN 

    SELECT t.idlisting, 
      t.idcategory, 
      t.price, 
      t.seller, 
      t.image 
    FROM [databaseName].dbo.LISTING t 
    WHERE t.idcategoryid = @categoryid 

END 

[DatabaseName] की जगह अपने डेटाबेस के नाम के साथ। दो अवधि प्रारूप का उपयोग करने का लाभ यह है कि जब तक स्पोक को निष्पादित करने वाले उपयोगकर्ता को तालिका (और डेटाबेस) तक पहुंच होती है तब तक स्पोक परिणाम लौटाएगा।

@ श्रेणी का उपयोग SQL सर्वर पैरामीटर sniffing issue से निपटने के लिए किया जाता है।

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

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