Ejecutar sentencias SQL contra BBDD de forma directa

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

En alguna ocasión, aunque no es nada recomendable, necesitamos ejecutar sentencias SQL directamente contra la base de datos desde Axapta sin pasar por el framework que utiliza Dynamics para ello.

Es posible que por ejemplo tengamos que hacer un drop table o algo parecido, para ello, crearemos en la clase Global, el siguiente método:

server static void DAXExecuteSQL(str    _sql)
{
	/* Método para ejecutar directamente sql sobre base de datos - www.dynamicsax.es */
	str                           ddl = '';
	SqlStatementExecutePermission ssep;
	Statement                     statement;
	Connection                    connection;
	;
 
	ddl = _sql;
 
	connection = new Connection();
	connection.ttsbegin();
 
	ssep = new SqlStatementExecutePermission(ddl);
	ssep.assert();
	statement = connection.createStatement(ResultSetType::Dynamic, ResultSetConcurrency::Updatable);
 
	// BP deviation documented
	statement.executeUpdate(ddl);
	connection.ttscommit();
}

Para utilizar el método desde cualquier parte de Axapta, simplemente tendremos que usar la siguiente llamada:

DAXExecuteSQL('Delete custTableTmp');

Esta llamada borrará la tabla CustTableTmp, igual que si lo ejecutáramos desde la consola de SQL Server

Etiquetas:, ,

Deja un comentario