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

SQL सर्वर (2008) IN के लिए SP को ArrayList या स्ट्रिंग पास करें ()

आप उपयोगकर्ता परिभाषित फ़ंक्शन जैसे

. का उपयोग कर सकते हैं
CREATE function [dbo].[csl_to_table] ( @list nvarchar(MAX) )
RETURNS @list_table TABLE ([id] INT)
AS
BEGIN
    DECLARE     @index INT,
            @start_index INT,
            @id INT

    SELECT @index = 1 
    SELECT @start_index = 1
    WHILE @index <= DATALENGTH(@list)
    BEGIN

        IF SUBSTRING(@list,@index,1) = ','
        BEGIN

            SELECT @id = CAST(SUBSTRING(@list, @start_index, @index - @start_index ) AS INT)
            INSERT @list_table ([id]) VALUES (@id)
            SELECT @start_index = @index + 1
        END
        SELECT @index  = @index + 1
    END
    SELECT @id = CAST(SUBSTRING(@list, @start_index, @index - @start_index ) AS INT)
    INSERT @list_table ([id]) VALUES (@id)
    RETURN
END

जो आईडी की एक nvarchar अल्पविराम से अलग सूची स्वीकार करता है और उन आईडी की एक तालिका को इनट्स के रूप में देता है। फिर आप अपनी संग्रहीत प्रक्रिया में लौटाई गई तालिका में शामिल हो सकते हैं जैसे -

DECLARE @passed_in_ids TABLE (id INT)

INSERT INTO @passed_in_ids (id)
  SELECT 
    id 
  FROM
    [dbo].[csl_to_table] (@your_passed_in_csl)

SELECT *
FROM 
myTable
INNER JOIN
@passed_in_ids ids
ON
myTable.id = ids.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर त्रुटि 109:INSERT कथन में VALUES खंड में निर्दिष्ट मानों की तुलना में अधिक स्तंभ हैं

  2. कमांड लाइन के माध्यम से dtsx संकुल को कैसे निष्पादित करें

  3. डेटाबेस में छवि डालें

  4. SQL सर्वर 2017 में एक डेटाबेस को पुनर्स्थापित करें

  5. MS SQL में एक क्वेरी की प्राथमिकता