在sql ce中声明变量

时间:2011-05-18 16:25:39

标签: sql sql-server-2005 sql-server-ce

我试着在sql compact edition中一个月内从表中获取记录。 这是我知道的SQL查询:

DECLARE @startDate as DATETIME, @EndDate as DATETIME

@startDate = GetDate();
@ENdDate = DATEADD(m,1,@startDate)

select * from table where (columnname between @startdate and @enddate)

我知道你必须一次发送一个脚本,但是如何在sql ce中声明变量(我猜它不接受声明)?

4 个答案:

答案 0 :(得分:1)

对于这个问题,我的回答很晚,但是希望对某人有用。
您不能在SQL CE中声明某些变量,因为每个命令只能使用一个语句。就像ErikEJ在{{3}}中所说的那样。

如果可能,您需要将脚本重构为一个重要的语句!
我将很高兴听到更好的解决方案。

答案 1 :(得分:0)

我不熟悉SQL-CE,但我认为你缺少一些Set语句。 试试这个

<击>

<击>
DECLARE @startDate as DATETIME, @EndDate as DATETIME

Set @startDate = GetDate();
Set @ENdDate = DATEADD(m,1,@startDate)

select * from table where (columnname between @startdate and @enddate)

<击>

<强>更新 请参阅MSDN中的SQL CE参考中的Using Parameters in Queries。你是正确的,因为Declare不是一个有效的关键字,所以你需要从应用程序本身作为参数化版本的查询。

select * from table where (columnname between ? and ?)

答案 2 :(得分:0)

查看帖子How do I populate a SQL Server Compact database? 并查看那里引用的工具是否可以帮助您。

答案 3 :(得分:0)

如果您通过应用程序调用它(我不确定您如何读取数据)

准备您的查询:

select * from table where (columnname between ? and ?)

但我不确定你是否可以使用between关键字。可能你需要改变它。

然后你需要像这样添加你的SqlCeParameter对象:

cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.DateTime, myDate));