sql >> Database >  >> RDS >> Oracle

Gebruik dbms_xmldom.writetofile zonder een benoemde directory

Het eerste probleem is dat het pad waarschijnlijk niet bestaat of dat je geen schrijfrechten hebt voor de map.

SQL> select directory_path from all_directories where directory_name = 'YOUR DIRECTORY' ;

Als je geen rijen hebt, moet je dit adresseren met je DBA, omdat de directory niet bestaat of je er geen rechten over hebt. Een databasedirectory is een combinatie van twee elementen:

  • De databasedirectory is een aanwijzer of verwijzing naar een locatie in het besturingssysteem.
  • Het pad van die map moet bestaan ​​en de gebruiker die het proces uitvoert, moet lees- en schrijfrechten hebben.

Voor het tweede probleem is het probleem dat de gebruiker die eigenaar is van de procedure niet het systeemrecht CREATE ENIGE DIRECTORY heeft gekregen. Uw DBA moet het recht CREATE ENIGE DIRECTORY over uw gebruiker verlenen, hoewel ik het niet aanraad. Het verlenen van ELKE privileges is een slechte beveiligingspraktijk.

Het maken van mappen is normaal gesproken een taak voor uw DBA. Ik voorzie geen scenario waarin je ze dynamisch moet maken, zolang je ook de onderliggende map in het bestandssysteem (Linux) of Windows-station moet maken, afhankelijk van je besturingssysteem.

Gezien je speciale omstandigheden heb je hier geen keus mee. U moet de oplossing opnieuw evalueren. Misschien kunt u WRITETOCLOB gebruiken in plaats van WRITETOFILE , en in plaats daarvan het resultaat in uw client naast sqlplus spoolen




  1. lees frame met sqlalchemy, mysql en panda's

  2. ontbrekende FROM-clausule voor tabel Grupo cakephp

  3. Hoe afbeeldingen uit een tabel met andere kolomteksten te halen met behulp van PHP

  4. Hoe geef ik een jdbc-paramater door met springboot en hibernate?