将表传递给存储过程的SQL查询
我有一个DateTime值列表,对于每个值,我需要从数据库中获取一些内容。我想通过一个查询来实现这一点。我知道可以将表(列表)传递给存储过程,但我不确定如何编写查询本身 假设我有下表:将表传递给存储过程的SQL查询,sql,sql-server-2008,parameters,Sql,Sql Server 2008,Parameters,我有一个DateTime值列表,对于每个值,我需要从数据库中获取一些内容。我想通过一个查询来实现这一点。我知道可以将表(列表)传递给存储过程,但我不确定如何编写查询本身 假设我有下表: CREATE TABLE Shows( ShowId [int] NOT NULL, StartTime DateTime NOT NULL, EndTime DateTime NOT NULL ) 还有一组日期 DECLARE @myDateArray MyCustomDateA
CREATE TABLE Shows(
ShowId [int] NOT NULL,
StartTime DateTime NOT NULL,
EndTime DateTime NOT NULL
)
还有一组日期
DECLARE @myDateArray MyCustomDateArrayType
现在,如果我获取单个项目,我将编写如下查询:
SELECT * FROM Shows
WHERE StartTime > @ArrayItem and @ArrayItem < EndTime
从显示中选择*
其中StartTime>@ArrayItem和@ArrayItem
其中@ArrayItem是来自@myDateArray的项
但是,我如何制定查询来获取所有数组项的信息呢 这应该可以做到:
SELECT s.*
FROM Shows s
JOIN @MyDateArray t ON s.StartTime > t.TableVarDateField
AND t.TableVarDateField < s.EndTime
选择s.*
从节目中
在s.StartTime>t.TableVarDateField上加入@MyDateArray t
和t.TableVarDateField
我想你的意思是开始时间你在使用什么数据库?MySQL?神谕MS SQL Server?还有别的吗?答案将取决于您使用的是什么,因为每个RDBMS都有不同的功能。对于所有数组项,您的意思是什么?因为一行很可能只适合查询部分数组,而不是全部数组。您如何知道他在使用SQL Server?@Oded-我可能错了,但这听起来很像OP在谈论SQL Server 2008中的表值参数支持——我不知道mySQL或Oracle是否以他们所描述的方式支持表值参数支持(但我绝对不是这方面的专家)。是的,我使用的是SQL Server。不管怎样,阿达瑟德夫建议的答案非常有效!我不知道这是SQL Server相关的语法。。。谢谢大家!