Fórum Executar Script com SQLConnection #256906
02/11/2004
0
CREATE TABLE TB_TESTE (
CODIGO INTEGER NOT NULL,
NOME VARCHAR(40) NOT NULL,
PRIMARY KEY (CODIGO)
);
INSERT INTO TB_TESTE (CODIGO, NOME)
VALUES (1, ´ALGO1´);
INSERT INTO TB_TESTE (CODIGO, NOME)
VALUES (2, ´ALGO2´);
COMMIT WORK;
Tenho que executar essas três atualizações no banco, e precisa ser tudo de uma vez, é que esses comandos estão dentro de uma arquivo texto, e é necessário executar o script que esteja nesse arquivo...
Desde já obrigado...
Edusgouveia
Curtir tópico
+ 0Posts
02/11/2004
Gilvanj
Dê uma olhada no pacote de componente DbExpressPlus. Tem o componente TSQLScript que foi feito para isso.
Gostei + 0
03/11/2004
Edusgouveia
Desde já obrigado
Gostei + 0
03/11/2004
Gilvanj
http://sourceforge.net/projects/dbexpressplus/
Parece que o pacote não é atualizado a bastante tempo...
Gostei + 0
03/11/2004
Vinicius2k
Há algum tempo desenvolvi uma função capaz de executar scripts simples...
Scripts simples seriam sem alterações ou criações de triggers ou procedures...
Ela ainda não está 100¬ testada, mas pode ser um ponto de partida para vcs...
function RunScript(aSQLConnection: TSQLConnection; aFileName: String): Boolean;
var TD: TTransactionDesc;
Arquivo: TextFile;
Linha, StrTemp: String;
Scripts: TStringList;
i: integer;
begin
Result:= False;
if not FileExists(aFileName) then Exit;
{ **** }
Scripts:= TStringList.Create;
StrTemp:= ´´;
AssignFile(Arquivo, aFileName);
Reset(Arquivo);
while not Eof(Arquivo) do
begin
ReadLn(Arquivo, Linha);
StrTemp:= StrTemp + Linha;
if Pos(´;´, StrTemp) > 0 then
begin
Scripts.Add(StrTemp);
StrTemp:= ´´;
end
else StrTemp:= StrTemp + ´ ´;
end;
CloseFile(Arquivo);
{ **** }
TD.TransactionID:= 1;
TD.IsolationLevel:= xilREADCOMMITTED;
try
if not aSQLConnection.Connected then
aSQLConnection.Connected:= True;
for i:= 0 to (Scripts.Count - 1) do
begin
try
aSQLConnection.StartTransaction(TD);
aSQLConnection.ExecuteDirect(Scripts[i]);
aSQLConnection.Commit(TD);
except
on E: Exception do
begin
aSQLConnection.Rollback(TD);
ShowMessage(e.Message);
Exit;
end;
end;
end;
except
on E: Exception do
begin
ShowMessage(e.Message);
Exit;
end;
end;
Result:= True;
end;Para usar:
if RunScript(SQLConnection1,´D:\correcoes.sql´) then ShowMessage(´Atualizações concluídas.´);
Espero ter ajudado...
T+
Gostei + 0
04/11/2004
Gilvanj
UPDATE LOGSISTEMA SET DADOS=´bla bla ; bla bla´ where ...
A função irá que quebrar o comando em duas instruções:
UPDATE LOGSISTEMA SET DADOS=´bla bla ;
e
; bla bla´
Gostei + 0
04/11/2004
Vinicius2k
Esta função não chega nem perto do que seria um SQL Parser... mas ela supriu uma necessidade que tive na época...
Como eu disse, apenas instruções DDL simples como CREATE TABLE, ALTER TABLE, CREATE INDEX, ela vai executar com sucesso...
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)