【发布时间】:2020-12-19 00:06:50
【问题描述】:
我正在审查别人的代码,但我碰壁了。当我尝试执行提供的脚本时,出现以下错误:
必须声明标量变量“@userId”。
我试图删除第 2 行的分号只是为了尝试,但这给了我以下错误:
关键字“with”附近的语法不正确。如果这个语句是一个公用表表达式、一个 xmlnamespaces 子句或一个更改跟踪上下文子句,则前面的语句必须以分号结束。
我对此感到非常困惑,因为这段确切的代码可以在其他机器上运行,但不能在我的机器上运行。我知道还有其他方法可以编写此查询,但我需要让它工作。 有什么方法可以让变量按此脚本中的预期工作而不重写整个内容?
我在 Ubuntu 18.04.4 LTS 上使用 Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64)。
DECLARE @userId int
SET @userId =:user_id;
WITH bidsplacedtotal AS (
SELECT amount, user_id, auction_id
FROM bids WHERE user_id = @userId
)
,bidsreceivedtotal AS (
SELECT amount, user_id, auction_id
FROM bids WHERE auction_id IN
(SELECT id FROM auctions WHERE user_id = @userId)
)
SELECT COUNT(amount) FROM bidsplacedtotal) AS placed_total
UNION
SELECT COUNT(amount) FROM bidsreceivedtotal) AS received_total
【问题讨论】:
-
:user_id是什么? -
当您将该代码中的
:user_id替换为文字数字 (2091) 时会发生什么:代码是否运行? -
无法重现此行为:dbfiddle.uk/…
-
您使用什么工具发送查询?是否使用分号作为批处理分隔符?
-
@StefanTeunissen 最好标记有问题的工具并专门提及它以供将来搜索的其他人使用。上下文很重要!
标签: sql sql-server odbc dbeaver sql-server-2019