Por supuesto que todo el código de un Stored Procedure (SP) se ejecuta en el contexto de una transacción... pero no solo eso, una llamada a un SP puede ser parte de una transacción mas grande, que a su vez haga inserts, updates, deletes y llamadas a otros SP's, además de Selects.
La transacción inicia por defecto con la primera instrucción que se ejecuta (no es necesario iniciarla explicitamente) y termina con commit o rollback.
Desde delphi, si usas BDE, este hace commit despues de cada instrucción que lanza a la base de datos, a menos que inicies explicitamente una transacción (lo que a mi me parece una deficiencia), pero es el BDE. Con ibx creo que podes configurarlo para que sea tambien autocommit.
Hasta luego.
