txtfile 내용은
update bugwa200401 set geom201j = 0 , geom201jc = 0 , geom201i = 0 , geom201d = 0 where (Sipjuid = '0001-0101') and (Iipjugubun = 1);
update bugwa200401 set geom201j = 0 , geom201jc = 0 , geom201i = 0 , geom201d = 0 where (Sipjuid = '0001-0201') and (Iipjugubun = 1);
update bugwa200401 set geom201j = 0 , geom201jc = 0 , geom201i = 0 , geom201d = 0 where (Sipjuid = '0001-0202') and (Iipjugubun = 1);
..
대충 이렇게 되구여...
with z1 do
begin
Close;
Sql.Clear;
Sql.LoadFromFile(txtfile);
ExecSql;
end;
이렇게 사용할려구 하는데 자꾸 Error가....
sql문을 txt로 만들고 불러올 때 문장 사이에 어떤 특정한 구분자가 들어가야 하는건지...(저는 ';'을 사용)
아니면 ExecSql 대신에 다른 걸 사용해야 하는 건지...
아시는 분 답변 부탁합니다.
Zeos에서 sql.loadFromFile(); 는 읽어들이는 SQL파일이 단일 명령일 경우에만 가능합니다. 즉 님처럼 dump 받은 형식의 파일은 LoadFromFile 메소드를 사용할수가 없습니다.
(사실 zeos 5.5 에서는 LoadFromFile() 메소드에 버그가 있었서 단일 SQL 조차 되지가 않았었습니다 6.0.x 버전에서는 수정이 되었더군요)
이런 경우에는 해당 파일을 한줄씩 읽어서
sql.clear;
sql.add();
이렇게 사용을 해야합니다.
예를 보시면 간단히 이해하실수 있을것입니다. 백문이 불여일타!
var
F : TextFile;
Count : Integer;
read_line : String;
begin
AssignFile(F,'test.sql');
reset(F);
Count := 0;
While not Eof(F) do begin
Readln(F, read_line);
query.SQL.Clear;
query.SQL.Add(read_line);
query.ExecSQL;
Inc(Count);
end;
CloseFile(F);
showMessage( intTostr(Count)+' 개의 쿼리문이 수행되었습니다 ' );
end;