如何在存储过程中存储多个值?

时间:2011-03-01 10:56:28

标签: sql

如果我想在变量中存储多个值,我该如何在存储过程中执行此操作?

我的意思是我们在正常编程中有数组概念我们在存储过程中有类似的东西

3 个答案:

答案 0 :(得分:2)

如果仅在程序范围内需要存储,则可以使用临时表来拯救您。

答案 1 :(得分:2)

根据您的特定数据库,有几种选择。

在SQL Server中,您可以定义

  • 仅用于连接的临时表(CREATE TABLE #YourTable(.....)
  • 任何连接(CREATE TABLE ##YourTable(.....)
  • 可见的全局临时表
  • 表变量(DECLARE @YourVariable TABLE (.....)

答案 2 :(得分:0)

您可以创建一个完整表格的变量。这是一个代码示例:

USE AdventureWorks2008R2;
GO
DECLARE @MyTableVar table(
    EmpID int NOT NULL,
    OldVacationHours int,
    NewVacationHours int,
    ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25,
    ModifiedDate = GETDATE() 
OUTPUT inserted.BusinessEntityID,
       deleted.VacationHours,
       inserted.VacationHours,
       inserted.ModifiedDate
INTO @MyTableVar;
--Display the result set of the table variable.
SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
FROM @MyTableVar;
GO
--Display the result set of the table.
SELECT TOP (10) BusinessEntityID, VacationHours, ModifiedDate
FROM HumanResources.Employee;
GO

正如您所看到的,您将其声明为普通表格。在程序结束时它将超出范围。

这些被称为表变量。您还可以创建临时表,它们以相同的方式工作,期望您使用以下内容声明它们:create table #tmp (Col1 int, Col2 int);

这里有两篇关于两者之间差异的SO帖子:What's the difference between a temp table and table variable in SQL Server?

回到原来的问题:你可以创建一个表变量并假装它是一个数组(好吧它就是!)。您只需要考虑SQL的数组函数,因此您将使用.Find子句代替WHERE