DBeaver,如何声明变量并使用它们?

51

我想知道在DBeaver的SQL编辑器中是否可以声明变量并在查询中使用它们。

6个回答

95
您需要在DBeaver的“窗口”->“首选项”->“数据库”->“编辑器”->“SQL编辑器”->“SQL处理”设置中启用变量处理。 在参数块中有一些您可以更改的设置。请参见维基上的动态参数绑定部分。

输入图像描述

然后您就能够进行以下操作:

@set date = '2019-10-09'

SELECT ${date}::DATE, ${date}::TIMESTAMP WITHOUT TIME ZONE

生成:

| date       | timestamp           |
|------------|---------------------|
| 2019-10-09 | 2019-10-09 00:00:00 |

6
请注意,@set 是 DBeaver 命令。如果您附加了 ;,它将成为变量值的一部分! - Álvaro González

24

可以,使用:

例如:

SELECT * FROM "SYSIBM".SYSDUMMY1
WHERE IBMREQD = :YOUR_VARIABLE

3
我的想法是在代码的顶部声明变量,例如在“Select”之上声明一个变量并给该变量赋值,如......my_variable =“success”。 - Elliott Urrutia
我认为这是唯一的方法。 - Nifriz
FYI,OOTB我能够使用以下方式运行::foo $foo${foo} - Adam Hopkins
1
您可以使用 @set 来定义变量,无论是哪种语法。DBeaver 将填充在首选项中定义的任何占位符。 - Álvaro González
但是你如何定义变量呢?Dbeaver很挑剔,在使用类似以下代码时会抛出语法错误:my_var = "hello"select :my_var - n3rd
1
你必须使用全部小写字母编写 @set!在 DBeaver 版本 22.3.0.202212041619 中,使用 @SET 无法正常工作。 - Peter A

5
在DBeaver SQL编辑器中,您可以输入以下内容:
-- define variable
@set my_var='hello SQL world'

-- call variable
select :my_var 

您还可以使用${my_var}来引用变量;但$my_var对我无效。我正在使用DBeaver v. 21.1。


5

根据@nicoschl的非常有帮助的文章,这里有一些小改进:

-- using declarations
@set datex_start = cast('2120-01-01' as date) as date_start;
-- datex_start is the var name
-- casting the value in the declaration saves us the work later
-- the var can be given a default fieldname (e.g. "date_start")

-- run as a standalone command since the subsequent SELECT statement doesn't return values when it's all run together

select 
    ${datex_start}
;

这将返回一个字段名称为“date_start”的值“2120-01-01”。

在DBeaver中,“以分号结尾”的set语句会定义一个以“分号”结尾的变量,因此如果您需要干净的值,请不要以“分号”结尾进行set操作。 - vasq
在Oracle中,我最终使用了@set i_date = (date '2000-01-01')(这使得复制粘贴存储过程查询变得相对简单,只需在输入参数前加上:,如select :i_date as col1 from dual)。 - Pasi Savolainen

1
使用BEGIN和END。这对我很有效。例如:
BEGIN
  DECLARE @name VARCHAR(10);
  SET @name = 'My Name';
  SELECT @name AS NAME;
END;

是的,这似乎是使用常规的MS SQL Server T-SQL变量声明所需的。我在其他地方没有找到这个记录! - undefined
我已经写了一些额外的细节,链接在这里:https://stackoverflow.com/a/77566399 - undefined

-1
您需要在Dbeaver设置中启用以下选项: 顶部窗口 > 首选项 > 然后查看下面的打印屏幕(更新于2022/08)。

Updated screenshot


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接