DB2函数中返回表

问题描述 投票:0回答:1

我正在使用 DB2 LUW,但在尝试创建函数时出现错误...

[代码:-104,SQL 状态:42601] 在“END”后面发现意外标记“END-OF-STATEMENT”。预期的标记可能包括:“JOIN ”.. SQLCODE=-104、SQLSTATE=42601、DRIVER=4.28.11

CREATE OR REPLACE FUNCTION FUNC_TT ()
 RETURNS TABLE (ID CHAR(1))
 LANGUAGE SQL
 READS SQL DATA
 NO EXTERNAL ACTION
 DETERMINISTIC
 BEGIN ATOMIC
   RETURN
     SELECT '1'
     FROM SYSIBM.SYSDUMMY1;
 END
db2 db2-luw dbvisualizer
1个回答
0
投票

这是一个常见问题。

当前发行的 DBVisualizer 版本默认允许 SQL 块标识符(用于指定块的开始和结束的字符),并且 DbViZ 还允许 @delimiter 命令让您选择一个字符(或两个字符)来临时-指示块的结尾。

仔细阅读 Dbvis 文档。

请参阅此处的文档https://www.dbvis.com/docs/ug/working-with-sql/executing-complex-statements/

但是要小心。如果您计划使用不同的自动化工具(与 Dbvisualizer 不同)部署脚本,那么您需要不同的方法。这将取决于您用于此类部署的工具。大多数人使用命令行和脚本编写,在这种情况下,Db2 CLP(命令行处理器)对脚本非常友好。它支持通过

--#SET TERMINATOR
方法在 SQL 脚本中指定分隔符,还允许通过选项 (
-td
...) 在命令行上指定块终止符。例如,要在使用 Db2 命令行处理器提交 SQL 时使用 @ 符号来指示块的结尾,您可以在脚本内使用
--#SET TERMINATOR @
(您可以在脚本内多次使用它)一个脚本,包括恢复到默认值;当您想再次使用非块简单语句时),或者作为替代,您可以在命令行上指定
-td@
,在这种情况下,分隔符将应用于 every 语句在通过
db2 -tf your_script.sql -td@

作为脚本执行的脚本内部
© www.soinside.com 2019 - 2024. All rights reserved.