Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहीत प्रक्रियाओं का उपयोग करके SQL में एकाधिक पंक्तियों को कैसे सम्मिलित करें?

SQL Server 2008+ में एक ही कथन में एकाधिक पंक्तियों को सम्मिलित करने के आसान तरीके हैं। उदाहरण के लिए यह सिंटैक्स मान्य है:

INSERT dbo.table(col1, col2) VALUES
    (1, 2),
    (2, 3),
    (3, 4);

उपरोक्त तीन पंक्तियाँ सम्मिलित करेगा। पुराने संस्करणों पर आप कुछ और क्रियात्मक चीजें कर सकते हैं जैसे:

INSERT dbo.table(col1, col2)
 SELECT 1, 2
  UNION ALL SELECT 2, 3
  UNION ALL SELECT 3, 4;

बेशक आपका ExecuteNonQuery एक ही कमांड होना जरूरी नहीं है, आप इसे एक स्ट्रिंग के रूप में पास कर सकते हैं और यह अभी भी काम करेगा:

INSERT dbo.table(col1, col2) VALUES(1, 2);
INSERT dbo.table(col1, col2) VALUES(2, 3);
INSERT dbo.table(col1, col2) VALUES(3, 4);

यदि आप इसे एक संग्रहीत कार्यविधि में करना चाहते हैं, तो आप आसानी से बहु-मूल्यवान मापदंडों पर विभाजन कर सकते हैं, उदाहरण के लिए यदि आप निम्न स्ट्रिंग में पास करते हैं:

1,2;2,3;3,4

आप मेरे द्वारा यहां पोस्ट किए गए फ़ंक्शन का उपयोग करके उन मानों को संसाधित कर सकते हैं:

स्प्लिट वैल्यू पेयर और एक क्रिएट टेबल यूडीएफ का उपयोग करना

तो आपकी प्रक्रिया कुछ इस तरह दिख सकती है:

CREATE PROCEDURE dbo.AddOrderLineItems
    @LineItems VARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT dbo.OrderItems(Product, Quantity)
      SELECT Product, Quantity FROM dbo.MultiSplit(@LineItems);
END
GO

और आप इसे C# के समतुल्य का उपयोग करके कहेंगे:

EXEC dbo.AddOrderLineItems @LineItems = '1,2;2,3;3,4';

या आप एलेक्सी द्वारा सुझाए गए तालिका-मूल्यवान पैरामीटर का उपयोग कर सकते हैं। एक त्वरित उदाहरण:

CREATE TYPE OrderLineItem AS TABLE
(
  Product INT,
  Quantity INT
);

फिर आप एक प्रक्रिया बना सकते हैं:

CREATE PROCEDURE dbo.AddOrderLineItems
    @LineItems OrderLineItem READONLY
    -- other parameters
AS
BEGIN
    SET NOCOUNT ON;

  INSERT dbo.OrderItems(Product, Quantity) 
  SELECT Product, Quantity FROM @LineItems;
END
GO

फिर अपने सी# कोड में समकक्ष टीवीपी बनाएं (मैं वह व्यक्ति नहीं हूं जिसे आप करना चाहते हैं; आप एक उदाहरण यहां )।

हालांकि कुछ चेतावनी हैं, कृपया इस प्रश्न को देखें:

एक सामान्यीकृत बनाना तालिका मान पैरामीटर के रूप में उपयोग के लिए टाइप करें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज़ प्रमाणीकरण से डेटाबेस की रक्षा कैसे करें

  2. PERFMON के माध्यम से प्रदर्शन काउंटरों की निगरानी | SQL सर्वर प्रदर्शन समस्या निवारण -3

  3. SQL सर्वर (T-SQL) में वर्तमान दिनांक स्वरूप कैसे बदलें

  4. SQL Server 2008 R2 में कुशल पेजिनेशन

  5. क्या हम किसी अन्य संग्रहीत प्रक्रिया के अंदर एक उप फ़ंक्शन या प्रक्रिया लिख ​​सकते हैं?