sql >> Database >  >> RDS >> Sqlserver

ik heb een sp nodig om mijn tabellen te selecteren of bij te werken en daarvoor moet ik meerdere waarden invoeren voor een enkele variabele, hoe kan ik dat doen?

Heb je erover nagedacht om tabelvariabelen te gebruiken om gegevens door te geven aan een opgeslagen procedure. Voorbeeld:

Instellen

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

Nu kunt u rijen invoegen in een tijdelijke tabelvariabele van het type EmpIdValuesType en de variabele doorgeven aan de opgeslagen procedure:

De opgeslagen procedure oproepen

DECLARE @empIds AS EmpIdValuesType

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

Exec usp_GetEmployees @empIds;

En hier zijn de resultaten:

SQLFiddle




  1. Hoe de maximale verbindingen in postgre te verhogen?

  2. Bulksgewijs verzamelen en onmiddellijk uitvoeren in Oracle

  3. Mysql/Php - Huidige datum en tijd

  4. Geometrisch gekoppelde resultaten berekenen in SQL SERVER 2008