首页 > 解决方案 > SPL1048:E(L5),意外的文本 ';' 代替 SPL 语句

问题描述

根据 Teradata文档,BEGIN 和 END 控制语句可以有标签。但是,尝试创建以下存储过程

create multiset table table_1
(
    id int not null,
    val int
) unique primary index(id);

create procedure test_sp(IN p1 int, IN p2 INT)
L1: BEGIN
    INSERT INTO table_1 VALUES(:p1,:p2);
END L1;

给我以下错误:

SPL1048:E(L5),意外的文本 ';' 代替 SPL 语句。SPL1027:E(L5),缺少/无效的 SQL 语句'E(3707):语法错误,预期在 ';' 之间有类似 'END' 关键字 并且 CREATE PROCEDURE 命令失败。

没有标签“L1”,代码工作得很好。另一方面,在过程中添加标签是可行的:

replace procedure test_sp(IN p1 int, IN p2 INT)
BEGIN
    L1: BEGIN
    INSERT INTO table_1 VALUES(:p1,:p2);
    END L1;
END;

这是配置设置,还是文档中的错误?

标签: teradata

解决方案


推荐阅读