我正在使用 DB2 LUW,但在尝试创建函数时出现错误...
[代码:-104,SQL 状态:42601] 在“END”后面发现意外标记“END-OF-STATEMENT”。预期的标记可能包括:“JOIN
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
这是一个常见问题。
当前发行的 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@
作为脚本执行的脚本内部