о SQLCODE -104 (ошибка) во время выбора в DB2

Я пытался адаптировать рабочий «INSERT» к оператору SELECT и продолжаю находить ошибку -104.

а) Может ли кто-нибудь помочь мне понять причину, по которой "." предложение «где» (ниже) работает, когда я запускаю «вставку», но выдает ошибку при использовании предложения «выбрать»? б) Как должны быть правильно написаны критерии «INSERT» при использовании SELECT?

Заранее большое спасибо за любую помощь в этом вопросе

Вставлять:

 INSERT INTO  SISPD2.SIS_DAILY_RECALC                            
         (CIN_NUM,PGM_DIV_FG,NON_CA_FG,PGM_EXCPT_FG,WTW_FG)   
 (SELECT C.CIN_NUM, C.PGM_DIV_FG, C.NON_CA_FG, C.PGM_EXCPT_FG,
         C.WTW_FG                                             
    FROM  SISPD2.SIS_INDV C                                  
   WHERE C.CIN_NUM NOT IN (SELECT CIN_NUM FROM  SISPD2.SIS_DAILY_RECALC)                       

------------------------------------------------------------------------

Выбирать :

    SELECT C.CIN_NUM  ||','||                                          
         C.PGM_DIV_FG ||','||                                        
         C.NON_CA_FG  ||','||                                        
         C.PGM_EXCPT_FG ||','||                                     
         C.WTW_FG   ||','||                                        
  WHERE (C.CIN_NUM NOT IN (SELECT A.CIN_NUM                        
                            FROM  SISPD2.SIS_DAILY_RECALC A));      

DSNT408I SQLCODE = -104, ОШИБКА: НЕПРАВИЛЬНЫЙ СИМВОЛ ".". НЕКОТОРЫЕ СИМВОЛЫ, КОТОРЫЕ МОЖЕТ
БЫТЬ ЗАКОННЫМИ: , FROM INTO
DSNT418I SQLSTATE = 42601 SQLSTATE RETURN CODE


person Wanda Larangeira    schedule 21.06.2016    source источник
comment
Будьте осторожны при пометке. Вы должны помечать только ту СУБД, которая имеет отношение к вашей проблеме.   -  person Sean Lange    schedule 21.06.2016
comment
Не знаком с db2, и мне трудно понять, что именно вы спрашиваете, но на днях я столкнулся с (редко поддерживаемым) оператором конкатенации ||; мне кажется, что ваш второй запрос пытается объединить WHERE с одним полем результата, что может запутать анализатор запросов.   -  person Uueerdo    schedule 21.06.2016
comment
Вы пропустили пункт FROM — вы должны что-то SELECT FROM.   -  person mustaccio    schedule 21.06.2016
comment
большое спасибо мустаччо :)   -  person Wanda Larangeira    schedule 21.06.2016
comment
большое спасибо Ууэрдо :)   -  person Wanda Larangeira    schedule 21.06.2016
comment
Шон, прости, я буду осторожнее   -  person Wanda Larangeira    schedule 21.06.2016


Ответы (1)


Вы не должны объединять оператор вместе, если вы не создаете динамический оператор, который вы собираетесь PREPARE и EXECUTE

 SELECT C.CIN_NUM  
         , C.PGM_DIV_FG
         , C.NON_CA_FG
         , C.PGM_EXCPT_FG
         , C.WTW_FG
  WHERE (C.CIN_NUM NOT IN (SELECT A.CIN_NUM
                            FROM  SISPD2.SIS_DAILY_RECALC A)); 
person Charles    schedule 21.06.2016
comment
большое спасибо, Чарльз, да, я пытался построить динамическое утверждение - person Wanda Larangeira; 21.06.2016
comment
Я оценил все ценные комментарии - благодаря всем моя проблема была решена :) - person Wanda Larangeira; 21.06.2016