El otro día explicaba cómo acceder a la base de datos desde FreePascal, aunque realmente sólo hacía una SELECT.
Hoy toca una update que es muy parecido.
Es muy similar a la SELECT del otro día. Hay estas diferencias:
- En la SELECT se hace SQLQuery1.Open.
- En la UPDATE SQLQuery1.ExecSQL.
- En la UPDATE hay que hacer COMMIT de la transacción con SQLTransaction1.Commit.
Luego hay que tener en cuenta unos detalles para que no se generen errores:
ORACLE espera que indiquemos los valores VARCHAR2 (equivalentes al tipo String) entre comillas simples. El problema es que si ponemos comillas simples dentro de SQLquery1.SQL.Text, se corta el string y nos salta un error que indica que el String está mal construido.
La solución es incluir dos comillas simples. FreePascal entiende que la primera comilla es un caracter de escape y en el String que se forma tiene que haber una comilla simple.
El código fuente para el copia-pega:
procedure TfrmPrincipal.Button2Click(Sender: TObject); var OracleConnection1: TOracleConnection; SQLquery1: TSQLQuery; SQLtransaction1: TSQLTransaction; begin OracleConnection1 := TOracleConnection.Create(nil); SQLquery1 := TSQLQuery.Create(nil); SQLtransaction1 := TSQLTransaction.Create(nil); try try with OracleConnection1 do begin DatabaseName:='entradaTNS-ORACLE'; UserName:='usuario'; Password:='password'; Transaction := SQLtransaction1; end; OracleConnection1.Connected:=true; SQLtransaction1.Active:=true; SQLquery1.DataBase := OracleConnection1; SQLquery1.SQL.Text := 'update TABLA set CAMPO=''C'' where CAMPO2=''D'''; SQLQuery1.ExecSQL; SQLTransaction1.Commit; ShowMessage ('Campo actualizado'); SQLquery1.Close; OracleConnection1.Close; finally SQLtransaction1.Free; SQLquery1.Free; OracleConnection1.Free; end; except on E: Exception do writeln(E.message); end; end;
Saludos,
No hay comentarios:
Publicar un comentario