sql >> Database >  >> RDS >> Oracle

Is er een manier om de output van PL/SQL in Oracle door te spoelen?

Niet echt. De manier waarop DBMS_OUTPUT werkt, is als volgt:Uw PL/SQL-blok wordt uitgevoerd op de databaseserver zonder interactie met de client. Dus als je PUT_LINE aanroept, wordt die tekst gewoon in een buffer in het geheugen op de server geplaatst. Wanneer uw PL/SQL-blok is voltooid, wordt de controle teruggegeven aan de client (in dit geval neem ik aan dat SQLPlus); op dat moment haalt de client de tekst uit de buffer door GET_LINE aan te roepen, en geeft deze weer.

Dus de enige manier waarop u de uitvoer vaker in het logbestand kunt laten verschijnen, is door een groot PL/SQL-blok op te splitsen in meerdere kleinere blokken, zodat de controle vaker aan de client wordt teruggegeven. Dit is misschien niet praktisch, afhankelijk van wat je code doet.

Andere alternatieven zijn om UTL_FILE te gebruiken om naar een tekstbestand te schrijven, dat kan worden leeggemaakt wanneer u maar wilt, of om een ​​autonome transactieprocedure te gebruiken om foutopsporingsinstructies in een databasetabel in te voegen en na elk ervan vast te leggen.



  1. Wat is een databank? En een DBMS?

  2. Hoe MySQL 5.5 naar 5.6 te upgraden op Ubuntu 14.04

  3. Inactieve mysql-verbindingen beëindigen

  4. Gegevens ophalen uit opgeslagen procedure met meerdere resultaatsets