我有一个select语句,其中可能返回多个值。所以我想将所选的值存储在一个表类型的数组中,因为在sql中没有数组的概念,并且也使用相同的存储值。我的选择查询如下:
if exists(
Select StartDate,EndDate
FROM Reservations1
where (DateAdd(day,0,StartDate) >= @StartDate)
and (DateAdd(day,0,EndDate) <= @EndDate)
and Requestid in
(Select RequestId from RequestModelMap1
where ModelSerialNumber=@ModelSerialNumber)
)
如果它返回一些值,那么我想存储它。
答案 0 :(得分:1)
一些伪SQL,因为我不确定您使用的是什么数据库系统:
-- create a table to store results
CREATE TABLE SelectedDates
(
StartDate DATETIME,
EndDate DATETIME
);
-- empty it
TRUNCATE TABLE SelectedDates
-- insert data
INSERT INTO SelectedDates (StartDate, EndDate)
Select StartDate,EndDate
FROM Reservations1
where (DateAdd(day,0,StartDate) >= @StartDate)
and (DateAdd(day,0,EndDate) <= @EndDate)
and Requestid in
(Select RequestId from RequestModelMap1
where ModelSerialNumber=@ModelSerialNumber)
答案 1 :(得分:1)
取决于&#34;数组&#34;的大小。您可能只想将其存储在table variable
中。我存储在表变量中的较小集合,但是更大的集合存储在临时表中。
DECLARE @MyDateArray TABLE
(
StartDate DATETIME
,EndDate DATETIME
)
INSERT INTO @MyDateArray
( StartDate
,EndDate
)
SELECT StartDate
,EndDate
FROM Reservations1
WHERE ( DATEADD(day, 0, StartDate) >= @StartDate )
AND ( DATEADD(day, 0, EndDate) <= @EndDate )
AND Requestid IN ( SELECT RequestId
FROM RequestModelMap1
WHERE ModelSerialNumber = @ModelSerialNumber )
SELECT *
FROM @MyDateArray
答案 2 :(得分:0)
如果要暂时存储值,可以选择临时表,例如......
Select StartDate,EndDate
INTO #temp
FROM Reservations1
where (DateAdd(day,0,StartDate) >= @StartDate)
and (DateAdd(day,0,EndDate) <= @EndDate)
and Requestid in
(Select RequestId from RequestModelMap1
where ModelSerialNumber=@ModelSerialNumber)
)
--Show that values have been stored...
SELECT * FROM #temp
然而,这可能不是您所需要的 - 或者最好的方式。你的问题需要更多细节...
答案 3 :(得分:0)
声明表变量
Declare @temp Table
(
startdate datetime,
enddate datetime
)
表变量在仅运行的脚本的持续时间内处于活动状态