DB2-LUW:存储过程中的UNION

问题描述

我正在尝试在存储过程中运行以下简单选择:

P1: BEGIN

    DECLARE v_uid INTEGER;
    
    SELECT  UID
    INTO    v_id
    FROM    TableA
    UNION 
    SELECT  UID
    FROM    TableB
    ;
    
END P1

它在z / OS数据库上工作正常,但在LUW数据库上,我收到以下错误

 Create‬‎ ‪stored‬‎ ‪procedure‬‎ ‪returns‬‎ ‪sqlCODE‬‎:‪‬‎ ‪‬‎-‪104‬‎,‪‬‎ ‪sqlSTATE‬‎:‪‬‎ ‪42601‬‎.‪
 TEST‬‎:‪‬‎ ‪25‬‎:‪‬‎ ‪An‬‎ ‪unexpected‬‎ ‪token‬‎ ‪‬‎"‪SELECT UID 
 FROM TABLEB"‬‎ ‪was‬‎ ‪found‬‎ ‪following‬‎ ‪‬‎"FROM TABLEA UNION"‬‎.‪‬‎ 
 Expected‬‎ ‪tokens‬‎ ‪may‬‎ ‪include‬‎:‪‬‎ ‪ ‬‎"‪‪<space>"‬‎.‪‬‎.‪‬‎ 
 ‪sqlCODE‬‎=‪‬‎-‪104‬‎,‪‬‎ ‪sqlSTATE‬‎=‪42601‬‎,‪‬‎ ‪DRIVER‬‎=‪4‬‎.‪24‬‎.‪92

LUW是否不允许使用UNION关键字?

解决方法

您必须将并集放置在子选择中,例如

select uid into v_id from
   (select uid from tablea
    union select uid from tableb);