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 服务器参数命名约定。
我正在尝试创建一个在访问中使用变量的查询,我正在使用以下 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 服务器参数命名约定。