sql >> Databasteknik >  >> RDS >> Oracle

Använd dbms_xmldom.writetofile utan en Named Directory

Det första problemet är att sökvägen förmodligen inte existerar eller så har du inga skrivrättigheter över katalogen.

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

Om du inte har några rader måste du åtgärda detta med din DBA, eftersom katalogen antingen inte finns eller så har du inga privilegier över den. En databaskatalog är en kombination av två element:

  • Databaskatalogen är en pekare eller referens till en plats i operativsystemet.
  • Sökvägen till den katalogen måste finnas och användaren som kör processen måste ha läs- och skrivbehörighet på den.

För det andra problemet är problemet att användaren som äger proceduren inte har fått systembehörigheten SKAPA NÅGON KATALOG. Din DBA måste ge CREATE ANY DIRECTORY-privilegiet över din användare, även om jag inte rekommenderar det. Att ge ALLA privilegier är en dålig säkerhetspraxis.

Att skapa kataloger är normalt en uppgift för din DBA. Jag förutser inget scenario när du behöver skapa dem dynamiskt, så länge du också måste skapa den underliggande katalogen i filsystemet (Linux) eller Windows-enheten, beroende på ditt operativsystem.

Med tanke på dina speciella omständigheter har du inget val med detta. Du måste omvärdera lösningen. Kanske kan du använda WRITETOCLOB istället för WRITETOFILE och sedan spoola resultatet i din klientsida av sqlplus istället




  1. Hur man får varje N:te rad i MySQL

  2. Hur man kombinerar resultat av två frågor till en enda datauppsättning

  3. 2 sätt att returnera rader som endast innehåller icke-alfanumeriska tecken i Oracle

  4. Hur kan jag infoga en bild i en SQLite-databas