如何在 DataGrip(Exasol 方言)的 SQL 查询中使用变量?
How to use variables in SQL queries on DataGrip (Exasol dialect)?
数据库:EXASOL
IDE:IntelliJ DataGrip
我试图在 SQL 中声明变量并在整个查询过程中调用它们。
这在 Microsoft SQL Server:
中是等效的
DECLARE @var AS INT = 3
SELECT @var AS var
-- Use case example:
SELECT * FROM table1 WHERE column_value = @var
这在 DataGrip 和 Exasol 中可行吗?我搜索了 Exasol 的文档 (General Script Language, Database Interaction),其中描述了以下内容:
a = 3
SELECT :a
但是,这会打开一个控制台,要求我在其中键入 a
的值。我不想每次执行代码时都键入变量的值。我想设置一个变量并在查询的不同部分使用它,就像任何其他高级编程语言一样。
我在 JetBrains 的论坛 (1, 2) but they are unanswered. Another one found on Whosebug (url) 上发现了两个类似的问题,只是说 DataGrips 不支持方言。
有谁知道如何解决这个问题?是不是根本不支持?这真的会提高我和我的团队的工作效率。
提前致谢!
花了一些时间,我发现这是不可能的。相反,Exasol 允许 LUA
可以 运行 此类计算的脚本。下面是一个示例:
CREATE LUA SCRIPT "TEST" (p_country) RETURNS TABLE AS
local param_c = p_country
exit(
query(
[[
SELECT * FROM SCHEMA_NAME.TABLE_NAME
WHERE SK_COUNTRY = :local_c;
]]
,{local_c=param_c}
)
);
/
EXECUTE SCRIPT SCHEMA_NAME.TEST('DE');
在此示例中,关键字 RETURNS TABLE
输出此查询的 table 结果。关键字 exit()
类似于 print()
方法。最后,我不知道为什么需要将函数参数分配给局部变量,然后需要将其分配给查询中的另一个变量。这对我来说毫无意义,但我无法让它工作。
在我的示例中,我将脚本参数 p_country
分配给本地参数 param_c
,然后将其分配给查询参数 local_c
.
您可以在以下位置找到文档:
数据库:EXASOL
IDE:IntelliJ DataGrip
我试图在 SQL 中声明变量并在整个查询过程中调用它们。 这在 Microsoft SQL Server:
中是等效的DECLARE @var AS INT = 3
SELECT @var AS var
-- Use case example:
SELECT * FROM table1 WHERE column_value = @var
这在 DataGrip 和 Exasol 中可行吗?我搜索了 Exasol 的文档 (General Script Language, Database Interaction),其中描述了以下内容:
a = 3
SELECT :a
但是,这会打开一个控制台,要求我在其中键入 a
的值。我不想每次执行代码时都键入变量的值。我想设置一个变量并在查询的不同部分使用它,就像任何其他高级编程语言一样。
我在 JetBrains 的论坛 (1, 2) but they are unanswered. Another one found on Whosebug (url) 上发现了两个类似的问题,只是说 DataGrips 不支持方言。
有谁知道如何解决这个问题?是不是根本不支持?这真的会提高我和我的团队的工作效率。
提前致谢!
花了一些时间,我发现这是不可能的。相反,Exasol 允许 LUA
可以 运行 此类计算的脚本。下面是一个示例:
CREATE LUA SCRIPT "TEST" (p_country) RETURNS TABLE AS
local param_c = p_country
exit(
query(
[[
SELECT * FROM SCHEMA_NAME.TABLE_NAME
WHERE SK_COUNTRY = :local_c;
]]
,{local_c=param_c}
)
);
/
EXECUTE SCRIPT SCHEMA_NAME.TEST('DE');
在此示例中,关键字 RETURNS TABLE
输出此查询的 table 结果。关键字 exit()
类似于 print()
方法。最后,我不知道为什么需要将函数参数分配给局部变量,然后需要将其分配给查询中的另一个变量。这对我来说毫无意义,但我无法让它工作。
在我的示例中,我将脚本参数 p_country
分配给本地参数 param_c
,然后将其分配给查询参数 local_c
.
您可以在以下位置找到文档: