2014-07-27 8 views
5

मैं संग्रहित प्रक्रिया में कॉलम डेटा की सूची कैसे पास कर सकता हूं?संग्रहित प्रक्रिया के साथ SQL सर्वर तालिका में मानों की सूची डालें

मेरे संग्रहीत प्रक्रिया है

ALTER PROCEDURE [dbo].[Register] 
    @Id  int, 
    @Name nvarchar(50) 
AS 
BEGIN 
    BEGIN TRY 
     INSERT INTO dbo.Group (Id, Name) 
     VALUES(@Id, @Name) 

     SELECT 0 
    END TRY 
    BEGIN CATCH 
     SELECT -1 
    END CATCH 
END 
GO 

मैं इस तालिका

@Id = 1,2,3,4,5 
@Name = 'test1,test2,test3,test4,test5' 

में डालने के लिए इस डेटा की तरह गुजरती हैं और इस

Id Name 
1 test1 
2 test2 
3 test3 
4 test4 
5 test5 

उत्तर

8

ए 'सूची "या" की तरह परिणाम चाहते हैं सरणी "एसक्यूएल सर्वर में ..... तालिका है। तो अगर आप एसक्यूएल सर्वर पर हैं या नए (आप निर्दिष्ट नहीं किया है), तो SQL सर्वर के तालिका-मान पैरामीटर सुविधा आपके संग्रहीत प्रक्रिया के लिए मूल्य का एक मेज पारित करने के लिए उपयोग करें

-- Create a table type to match your input parameters 
CREATE TYPE IdNameTable AS TABLE 
(ID INT, Name NVARCHAR(50)); 
GO 

-- change your stored procedure to accept such a table type parameter 
ALTER PROCEDURE [dbo].[Register] 
    @Values IdNameTable READONLY 
AS 
BEGIN 
    BEGIN TRY 
     INSERT INTO dbo.Group (Id, Name) 
      -- get the values from the table type parameter 
      SELECT 
      Id, Name 
      FROM 
      @Values 

     SELECT 0 
    END TRY 
    BEGIN CATCH 
     SELECT -1 
    END CATCH 
END 
GO 

देखें व्यापक और स्वतंत्र रूप से उपलब्धSQL Server Books Online documentation तालिका-मान पैरामीटर सुविधा पर अधिक जानकारी के लिए और यह

कैसे उपयोग करने के लिए आप T-SQL से उपयोग करना चाहते हैं, इस कोड का उपयोग:

-- declare a variable of that table type 
DECLARE @InputTable IdNameTable 

-- insert values into that table variable 
INSERT INTO @InputTable(ID, Name) 
VALUES (1, 'Test 1'), (2, 'Test 2') 

-- execute your stored procedure with this table as input parameter 
EXECUTE [dbo].[Register] @InputTable 

यदि आप इसे सी # या वीबी.नेट से उपयोग करना चाहते हैं, तो टिप्पणी में माइकल ईडनफील्ड का लिंक देखें।

+1

http://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx सी # –

+0

से इनका उपयोग करने के लिए यह उपयोगी होगा, यदि आप डेटा को पास करने का तरीका अपडेट करते हैं तो यह सहायक होगा प्रक्रिया पैरामीटर के लिए ... – Jesuraja

+0

@marc_s बहुत बहुत धन्यवाद, लेकिन एक questio। मैं निष्पादित संग्रहीत प्रक्रिया का उपयोग कैसे करता हूं? पास मूल्य? जब मैं इस संग्रहीत प्रक्रिया को चलाता हूं, और इसे बदलना चाहता हूं तो मुझे यह त्रुटि मिलती है कि वह 'IdNameTable' टाइप करता है, या आपके पास इसे बनाने की अनुमति नहीं है। कृपया मेरी मदद करें –

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