안녕하세요...
추운 날씨에 고생들 많으십니다.
SQL로 Update하려고 하는데 에러가 발생하네요
그리고 이렇게 해도 Update가 되는 건지요...
~~~알고 싶어요
여기에서 Head.ObCheck = SmallInt이고
Head.No는 LongInt로 프라이머리 키이고요
Studysave.No = LongInt
Studysave.Obcheck = SmallInt
Query.Close;
Query.Sql.Clear;
Query.Sql.add('Update Head.db');
Query.Sql.Add('set ObCheck = 0');
Query.Sql.Add('WHERE Head."No" =');
Query.Sql.Add('(SELECT Studysave."No"');
Query.Sql.Add('FROM "StudySave.db" Studysave');
Query.Sql.Add('WHERE Studysave.ObCheck = 0)');
Query.ExecSQL;
Query.Close;
Query.Open;
> 안녕하세요...
> 추운 날씨에 고생들 많으십니다.
> SQL로 Update하려고 하는데 에러가 발생하네요
> 그리고 이렇게 해도 Update가 되는 건지요...
> ~~~알고 싶어요
>
> 여기에서 Head.ObCheck = SmallInt이고
> Head.No는 LongInt로 프라이머리 키이고요
> Studysave.No = LongInt
> Studysave.Obcheck = SmallInt
> Query.Close;
> Query.Sql.Clear;
> Query.Sql.add('Update Head.db');
> Query.Sql.Add('set ObCheck = 0');
> Query.Sql.Add('WHERE Head."No" =');
> Query.Sql.Add('(SELECT Studysave."No"');
> Query.Sql.Add('FROM "StudySave.db" Studysave');
> Query.Sql.Add('WHERE Studysave.ObCheck = 0)');
> Query.ExecSQL;
> Query.Close;
> Query.Open;
>
음....위의 코딩을 제식대로하면 하면 이런거 같군요..
(cSql 은 스트링변수)
cSql := 'update Head set ObCheck = :HObCheck ';
cSql := cSql+'where Head.No = (select Studysave.No from Studysave ';
cSql := cSql+'where Studysave.ObCheck = :SObCheck) ';
with Query do
begin
close;
sql.clear;
sql.add(cSql);
ParamByName('HObCheck').AsInteger := 0;
ParamByName('SObCheck').AsInteger := 0;
ExecSql;
end;
저는 주로 ParamByName을 많이 쓰는데요..필드타입이 맞는지는 모르겠지만..
어쨌든, ''(따옴표) 사용이 잘못 된것 같네요.
필드명에 ''가 들어간거 같은데요..
글구, 서브쿼리의 결과값이 하나여야 오류가 안납니당...
제대로 답변이 됐는지 모르겠네요..^^...