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

मुझे अपनी टेबल चुनने या अपडेट करने के लिए एक एसपी चाहिए और इसके लिए मुझे सिंगल वेरिएबल के लिए एकाधिक मान दर्ज करना होगा, मैं यह कैसे कर सकता हूं?

क्या आपने किसी संग्रहीत कार्यविधि में डेटा पास करने के लिए तालिका चर का उपयोग करने के बारे में सोचा है। उदाहरण:

सेटअप

CREATE TYPE EmpIdValuesType AS TABLE
  (                     
        [EmpID] [int]NOT NULL
  )

CREATE TABLE Employee
(
  EmpID INT,
  Name varchar(20)
 )

INSERT INTO Employee 
Values
 (1, 'test1'),
 (2, 'test2'),
 (3, 'test3'),
 (4, 'test4'),
 (5, 'test5'),
 (6, 'test6'),
 (7, 'test7');

Create Procedure usp_GetEmployees
(
  @TableVariable EmpIdValuesType READONLY
)
AS
  SELECT *
  FROM Employee
  INNER JOIN @TableVAriable TV
    ON Employee.EmpId = TV.EmpId

अब आप EmpIdValuesType प्रकार के अस्थायी तालिका चर में पंक्तियाँ सम्मिलित कर सकते हैं और चर को संग्रहीत कार्यविधि में पास कर सकते हैं:

संग्रहीत प्रक्रिया को कॉल करना

DECLARE @empIds AS EmpIdValuesType

INSERT INTO @empIds(EmpID) Values (1), (2), (5)

Exec usp_GetEmployees @empIds;

और यहाँ परिणाम हैं:

SQLFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं किसी तालिका में xml.nodes () से आउटपुट कैसे सम्मिलित करूं?

  2. एसक्यूएल सर्वर निर्भरता

  3. SQL सर्वर (T-SQL उदाहरण) में 'datetimeoffset' को 'datetime2' में बदलें

  4. क्या होता है यदि किसी संग्रहीत कार्यविधि को चलाने के दौरान परिवर्तित किया जाता है?

  5. सबसे कठिन प्रश्नों पर सहायता के लिए सर्वश्रेष्ठ SQL सर्वर प्रदर्शन फ़ोरम