0
我正在嘗試創建一些部署工具,但我不想使用BTEQ。我一直在嘗試使用PowerShell中的Teradata.Client.Provider,但是在創建表時出現語法錯誤。如何在不使用BTEQ的情況下在Teradata中使用IF語句
[Teradata Database] [3706] Syntax error: expected something between ';' and the 'IF' keyword.
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 Database] [3706]語法錯誤:預計在';'之間;和'IF'關鍵字。我更新了這個問題來反映這一點。 – Russ960
當然,'IF'是BTEQ語法的一部分,您需要將邏輯移入PowerShell。運行Select,檢查它是否返回一行,否則運行CREATE ... – dnoeth
好的。這證實了我的理解,即任何工具中都沒有任何工具可以通過BTEQ使用這個工具,或者在執行之前執行我的邏輯。 – Russ960