Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

имам нужда от sp, за да избера или актуализирам таблиците си и за това трябва да въведа множество стойности за една променлива, как мога да направя това?

Мислили ли сте да използвате променливи на таблица за предаване на данни към съхранена процедура. Пример:

Настройка

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. възстановяването на база данни е неуспешно с преместване

  2. Могат ли двойни кавички да се използват за ограничаване на низ?

  3. Печат за дата и час по подразбиране на SQL Server?

  4. Предавайте тип стойност на таблица към съхранена процедура на SQL Server чрез Entity Framework

  5. Актуализация на SQL, същата заявка, различни резултати всеки път