Plsql 如何在DBeaver/DBVisualizer中编写DB2PL/sql脚本

Plsql 如何在DBeaver/DBVisualizer中编写DB2PL/sql脚本,plsql,db2,dbeaver,dbvisualizer,Plsql,Db2,Dbeaver,Dbvisualizer,如何在DBeaver/DBVisualizer中编写简单的DB2PL/sql脚本?我基本上是尝试创建动态SQL(在循环中),然后运行它。为此,我需要变量,如SQL字符串、构建等,然后运行动态创建的脚本 下面是SQLServer中的一个示例。我想为DB2编写如下内容: BEGIN DECLARE @example VARCHAR(15) ; SET @example = 'welcome' ; SELECT @example; END dbvis允许您为Db2开发脚本 你需要知道

如何在DBeaver/DBVisualizer中编写简单的DB2PL/sql脚本?我基本上是尝试创建动态SQL(在循环中),然后运行它。为此,我需要变量,如SQL字符串、构建等,然后运行动态创建的脚本

下面是SQLServer中的一个示例。我想为DB2编写如下内容:

BEGIN  
  DECLARE @example VARCHAR(15) ;
  SET @example = 'welcome' ;
  SELECT @example;
END

dbvis允许您为Db2开发脚本

你需要知道一些基本知识

首先,您需要告诉dbvis除了默认值之外还有一个额外的语句分隔符;分号。Db2需要知道中间语句的结尾和复合块的结尾之间的区别,为此,Db2使用额外的分隔符/终止符作为块的结尾

您可以使用
@delimiter
命令(特定于dbvis)在脚本中指定此块分隔符/终止符,也可以通过dbvis设置GUI配置分隔符(这是更好的方法)。这取决于dbvis的版本

许多人在为Db2编写复合SQL时使用@字符作为块分隔符,但也可以使用其他字符(只要它与默认分号不同)

如果希望Db2命令行处理器直接运行脚本,而不使用dbvis(即从命令行shell(cmd.exe或bash/ksh等)运行脚本那么您就不会使用
@delimiter
命令,因为这只有dbvis知道。Db2命令行处理器理解语法
--#SET TERMINATOR@
,可以在脚本中动态更改分隔符,并且它还有一个命令行选项(
-td@
)允许您通过命令行指定替代分隔符

其次,您需要了解哪个平台(Db2-for-Z/OS、Db2-for-i、Db2-for-Linux/Unix/Windows/Cloud)因为每个平台的特性和语法可能不同。在请求Db2帮助时,您应该始终指定目标平台,stackoverflow为Db2 luw、Db2-400和Db2 zos提供了专用标记


第三,您需要遵循ANSI SQL PL语法规则(即Microsoft SQL Server中使用的transact-SQL),其中包括有关标识符名称的有效字符的规则。在Db2上,变量不能以@开头。如果您的Db2服务器运行在Linux/Unix/Windows上,并且已经预先进行了专门配置,那么您也可以使用Oracle PL/SQL语法编写块,Db2将模拟该语法。但目前,Db2中没有emul的功能ate Transact-SQL。

您想要这样的东西吗?我不知道DBeaver/DBVisualizer是否支持此功能。在PL/SQL中,所有变量的顶部都有一个
declare
部分,它们不是以
@
开头的。Oracle SQL还需要一个
from
子句,因此您不能只
选择123;
(假设DB2实现是相同的)。为此提供了系统虚拟表
dual
。在DBeaver中,我喜欢使用空行作为语句分隔符。唯一(次要)的缺点是,如果希望SP(或查询等)中有空行,然后如果您想将内容隔开,则需要一个伪
--
注释。我的dbvis设置分隔符设置为“;”。它的Db2 LUW类型。说到这里,您能举个例子吗?