MS Access 2010 声明变量

MS Access 2010 Declaring variables

我正在尝试创建一个在访问中使用变量的查询,我正在使用以下 SQL:

PARAMETERS @arrival_date date, @departure_date date, @hotel_id int;
SELECT
    *
FROM
    dbo.room r
WHERE
    (r.hotel_id = @hotel_id)
AND
    room_id NOT IN (
    SELECT
        r.room_id
    FROM
        room r
    LEFT JOIN
        booking b
    ON
        r.hotel_id = b.hotel_id
    AND
        r.room_id = b.room_id
    WHERE
        r.hotel_id = @hotel_id
    AND
        ((arrival_date <= @departure_date)
    AND
        (departure_date >= @arrival_date))
);

此查询在存储过程(以及在那里声明变量的正确方法)中工作得非常好,但是当我尝试使用查询生成相同的查询时,我得到如下错误:

ADO error: Incorrect syntax near 'Parameters'. Must declare the scalar variable "

hotel_id".
Must declare the scalar variable "

hotel_id".

我试过使用 DECLARE 语法,但这似乎也不起作用。有关其他信息(不确定这会产生什么影响,但我想我还是要提一下)我在虚拟机上使用 Microsoft Access 2010(在 Mac 上)。我的数据库本身是在 SQL 服务器中创建的,并已导入到 MS Access 中。我现在无法再访问 SQL 服务器,所以我所做的任何事情都需要在 MS Access

中完成

“@”是 Access SQL 标识符的无效字符。

修复?简单!用 [ ]:

引用参数名称
PARAMETERS [@arrival_date] date, [@departure_date] date, [@hotel_id] int;
SELECT
    *
FROM
    dbo.room r
WHERE
    (r.hotel_id = [@hotel_id])
AND
    room_id NOT IN (
    SELECT
        r.room_id
    FROM
        room r
    LEFT JOIN
        booking b
    ON
        r.hotel_id = b.hotel_id
    AND
        r.room_id = b.room_id
    WHERE
        r.hotel_id = [@hotel_id]
    AND
        ((arrival_date <= [@departure_date])
    AND
        (departure_date >= [@arrival_date]))
);

顺便说一句,我更喜欢在 Access 中使用 @ 作为参数名称的前缀,因为它符合 SQL 服务器参数命名约定。