Un saludo a tod@s,
Tengo una duda que quizás me puedan ayudar a despejar, sin mas preámbulos vamos al problema:
Estoy trabajando en una aplicación conectada a una BD SQL (Server o cualquier otra). Para realizar las consultas sobre la BD utilizo dos métodos (mediante
DBExpress):
1.
obtenerConsulta : me devuelve un ClientDataSet con los resultados consultados.
2.
ejecutarConsulta: ejecuta una sentencia SQL dada y me devuelve un valor entero.
Este ultimo metodo (ejecutarConsulta) en realidad lo que hace es declarar un
TSQLQuery y ejecutar un
ExecSql, que como supongo muchos saben devuelve el número de filas afectadas por la consulta.
Cita:
...
SQL.Clear;
SQL.Add(query);
Result := ExecSQL(true);
|
Aqui es donde surge el problema: resulta que mediante el ExecSQL estoy ejecutando un procedimiento almacenado que inserta un registro en una tabla dadas ciertas condiciones, pero ademas de esto me devuelve un valor numerico significando si realizo la insercion (
1), o si no la inserto porque el registro ya exisitía (
2) o no cumplía una condición dada (
3).
Así, mi pregunta es la siguiente:
¿Existirá alguna manera de ejecutar un procedimiento almacenado que realize modificaciones a la BD y que me devuelva un valor numerico que no sea el numero de filas afectadas?
Ya intente ejecutando el procedimiento almacenado mediante el comando
Open; en este caso si puedo obtener el valor númerico pero se cae en el caso de tener tener que realizar la insercion (caso
1)...
Alguna idea? Gracias y saludos.