Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

potrzebuję sp, aby wybrać lub zaktualizować moje tabele, a do tego muszę wprowadzić wiele wartości dla jednej zmiennej, jak mogę to zrobić?

Czy myślałeś o użyciu zmiennych tabeli do przekazywania danych do procedury składowanej? Przykład:

Konfiguracja

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

Teraz możesz wstawić wiersze do tymczasowej zmiennej tabeli typu EmpIdValuesType i przekazać zmienną do procedury składowanej:

Wywołanie procedury zapisanej

DECLARE @empIds AS EmpIdValuesType

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

Exec usp_GetEmployees @empIds;

A oto wyniki:

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. Nazwa kolumny i/lub nazwa tabeli jako parametry

  2. Widok SQL Server pokazujący nieaktualne/błędne dane po zmianie podstawowych zależności

  3. Sterownik nie mógł nawiązać bezpiecznego połączenia z programem SQL Server przy użyciu szyfrowania Secure Sockets Layer (SSL)

  4. Unpivot z nazwą kolumny

  5. Najszybszy sposób przesyłania danych tabeli Excel do SQL 2008R2