簡體   English   中英

MySQL變量值錯誤(SELECT INTO)

[英]MySQL wrong value in variable (SELECT INTO)

我正在MySQL中調試存儲過程,但我不知道我的錯誤在哪里。 我有以下代碼:

SELECT refreshToken.token FROM refreshToken WHERE refreshToken.accountId = 2;

此代碼返回一個空集。 但是這段代碼:

SELECT refreshToken.token INTO @a FROM refreshToken WHERE refreshToken.accountId = 2;
SELECT @a;

返回表中的第一個值。

這是因為@a已經用一些值初始化了。

當查詢返回空記錄時,全局變量將保留其先前的值。

因此,在運行查詢之前清除變量值始終是一個好主意

set @a = null;
SELECT refreshToken.token INTO @a FROM refreshToken WHERE refreshToken.accountId = 2;
SELECT @a;

這應該顯示@a為空

這是為了增加Akhil的答案(正確)。 使用會話變量很危險,因為它們已經被初始化了。 每次使用它們時,初始化它們都比較安全,一種方法是在查詢本身中進行初始化:

SELECT @a := refreshToken.token
FROM refreshToken CROSS JOIN
     (SELECT @a := NULL) params
WHERE refreshToken.accountId = 2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM