DB2 Грешка по време на изпълнение

UPDATE
      S
SET

    (S.a,
    S.b,
    S.c)
=
(

SELECT 
    FS.a,
    FS.b,
    FS.c
FROM

(SELECT 
    T.a,            
    T.b,                
    T.c,                    
    T.d,            
    T.e,                
    CASE 
        WHEN IS.a IS NULL THEN 'N'
        ELSE 'Y'
    END 

FROM 
    t       T
        JOIN
           y
          ON(y.a = T.a)




) FS


WHERE
    FS.a    = S.e
    AND FS.b    = S.a
    AND FS.c    = S.b
    AND FS.d    = S.c
)

Докато изпълнявам тази заявка, получавам грешка:

 21:23:59  [UPDATE - 0 row(s), 0.000 secs]  [Error Code: -811, SQL State: 21000]  DB2 SQL Error: SQLCODE=-811, SQLSTATE=21000, SQLERRMC=null, DRIVER=3.50.152
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec  [0 successful, 0 warnings, 1 errors]

Можете ли да ми обясните първопричината...?


person Sreejith S T    schedule 14.09.2009    source източник


Отговори (1)


Всички DB2 съобщения и техните значения могат да бъдат намерени онлайн.

Във вашия случай, според записа за SQL0811N:

Едно от следните е причинило грешката:

  • Execution of an embedded SELECT INTO or VALUES INTO statement resulted in a result table of more than one row.
  • Execution of a scalar fullselect resulted in a result table of more than one row.

Това означава, че вашият оператор select, който започва:

SELECT 
FS.a,
FS.b,
FS.c
FROM ...

връща повече от един ред. Това не е разрешено, тъй като се опитвате да зададете стойности на един ред в израза за актуализиране.

person Michael Sharek    schedule 14.09.2009