首页 > 解决方案 > SQL 到 IBMDB2 的语法问题

问题描述

我正在尝试在 IBMDB2 中执行以下 SQL 脚本,但无法为 IBMDB2 获取语法正确的脚本;

BEGIN TRY

    BEGIN TRANSACTION

    if not exists (select * from AAA.BBBB WHERE COL1='[Param.1]' and COL2=[Param.2] and COL3='[Param.3]')
    begin
        INSERT INTO PRODFILE.MESUPPF (COL1, COL2, COL3, COL4,  COL5, COL6)
        VALUES( '[Param.1]', [Param.2], '[Param.3]', '[Param.4]' , '[Param.5]', '[Param.6]' )
    end
    else
    begin
        update AA.BB set COL1='[Param.4]',COL2='[Param.5]',COL3='[Param.6]'  WHERE COL4='[Param.1]' and COL5=[Param.2] and COL6='[Param.3]')
    end
    Select  'Success'  as Message, 'S' as MessageType

END TRY
BEGIN CATCH

    ROLLBACK TRANSACTION

    INSERT INTO ERROR_LOG (LOGTM,LOGTX) VALUES (getdate(),CAST(ERROR_LINE()AS VARCHAR(4)) + ERROR_MESSAGE())
    Select  'Error'  as Message, 'E' as MessageType

END CATCH

标签: sql-serversyntax-errordb2-luw

解决方案


DB2 for IBM i 不允许在 SQL 例程之外执行复合 sql 语句。
请参阅CREATE PROCEDURE (SQL),了解如何使用其中的 DB2 方言创建这样的例程。


推荐阅读