如何在不使用BTEQ的情况下在Teradata中使用IF语句

时间:2017-05-15 16:11:06

标签: teradata

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

  

[Teradata数据库] [3706]语法错误:期望之间的东西   &#39 ;;'而且' 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,因为我没有发现它在我们创建的其他部署工具中运行良好并且需要一些黑客攻击。我可以使用什么来避免使用该工具吗?

1 个答案:

答案 0 :(得分:1)

什么解析错误

由于INTEGER中的MyColIdVARCHAR(max)中的ExceptionOutput中的Visual C++ Redistributable加倍,CREATE将失败,这是Teradata中未知的数据类型。