【问题标题】:How can I use IF statements in Teradata without using BTEQ如何在不使用 BTEQ 的情况下在 Teradata 中使用 IF 语句
【发布时间】:2017-10-14 12:26:00
【问题描述】:

我正在尝试创建一些部署工具,但我不想使用 BTEQ。我一直在尝试在 PowerShell 中使用 Teradata.Client.Provider,但在创建表时遇到语法错误。

[Teradata Database] [3706] 语法错误:预期介于 ';'和“IF”关键字。

SELECT * FROM DBC.TablesV WHERE DatabaseName = DATABASE AND TableName = 'MyTable';
IF ACTIVITYCOUNT > 0 THEN GOTO EndStep1;

CREATE MULTISET TABLE MyTable ,
    NO FALLBACK ,
    NO BEFORE JOURNAL,
    NO AFTER JOURNAL,
    CHECKSUM = DEFAULT,
    DEFAULT MERGEBLOCKRATIO
        (
            MyColId         INTEGER GENERATED ALWAYS AS IDENTITY
                                                    (START WITH 1
                                                    INCREMENT BY 1
                                                    MINVALUE 0
                                                    MAXVALUE 2147483647 
                                                    NO CYCLE)
                                                    NOT NULL,
            MyColType           VARCHAR(50)     NULL,
            MyColTarget     VARCHAR(128)    NULL,
            MyColScriptName VARCHAR(256)    NULL,
            MyColOutput     VARCHAR(64000)  NULL,
            isMyColException    BYTEINT(1)      NULL,
            ExceptionOutput         VARCHAR(64000)  NULL,
            MyColBuild          VARCHAR(128)    NULL,
            MyColDate           TIMESTAMP       NOT NULL
        )
    PRIMARY INDEX PI_MyTable_MyColLogId(MyColLogId);

LABEL EndStep1;

我宁愿不使用 BTEQ,因为我没有发现它在我们创建的其他部署工具中运行良好,并且需要一些技巧。有什么我可以使用的东西可以避免使用该工具吗?

【问题讨论】:

    标签: teradata


    【解决方案1】:

    什么解析错误

    由于MyColId 中的INTEGERExceptionOutput 中的VARCHAR(max) 重复,CREATE 将失败,这是 Teradata 中的未知数据类型。

    【讨论】:

    • 我更正了这些错误,但得到了这个错误:[Teradata Database] [3706] 语法错误:预期在 ';' 之间有一些东西和'IF'关键字。我更新了问题以反映这一点。
    • 当然,IF 是 BTEQ 语法的一部分,您需要将逻辑移到 PowerShell 中。运行 Select,检查它是否返回一行,否则运行 CREATE...
    • 好的。这证实了我的理解,即除了通过 BTEQ 或在执行之前执行我这边的逻辑之外,任何工具中都没有任何东西可以使用它。
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多