2011-03-01 132 views
0

如果我想在一个变量中存储多个值,我怎么能在存储过程中做到这一点?如何在存储过程中存储多个值?

我的意思是,我们在正常节目阵列概念做我们在

+0

你是指[csv](http://en.wikipedia.org/wiki/Comma-separated_values)之类的东西吗? – 2011-03-01 10:58:11

+0

是的,你做它叫做表 – Luis 2011-03-01 10:58:56

+0

正如路易斯指出的,数据库使用表... – MatBailie 2011-03-01 11:13:06

回答

2

如果存储只是程序的范围内所需的存储过程类似的东西,那么临时表,在那里来救你。

2

根据您的特定数据库,有几个选项可用。

在SQL Server中,你可以定义

  • 一个临时表只是你的连接(CREATE TABLE #YourTable(.....)
  • 全局临时表可见于任何连接(CREATE TABLE ##YourTable(.....)
  • 表变量(DECLARE @YourVariable TABLE (.....)
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的数组函数,所以你可以使用WHERE子句而不是.Find

相关问题