sql >> Databáze >  >> RDS >> Oracle

Použijte dbms_xmldom.writetofile bez pojmenovaného adresáře

První problém je, že cesta pravděpodobně neexistuje nebo nemáte žádná oprávnění k zápisu do adresáře.

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

Pokud nemáte žádné řádky, musíte to vyřešit se svým správcem databáze, protože adresář buď neexistuje, nebo k němu nemáte žádná oprávnění. Adresář databáze je kombinací dvou prvků:

  • Adresář databáze je ukazatel nebo odkaz na umístění v operačním systému.
  • Cesta k tomuto adresáři musí existovat a uživatel, který proces spouští, v něm musí mít oprávnění pro čtení a zápis.

U druhého problému je problém v tom, že uživateli, který proceduru vlastní, nebylo uděleno systémové oprávnění CREATE ANY DIRECTORY. Váš správce databází musí vašemu uživateli udělit oprávnění CREATE ANY DIRECTORY, i když to nedoporučuji. Udělování JAKÝCHKOLI oprávnění je špatný bezpečnostní postup.

Vytváření adresářů je obvykle úkolem vašeho DBA. Nepředpokládám scénář, kdy je budete potřebovat vytvářet dynamicky, pokud musíte také vytvořit základní adresář na jednotce Filesystem (Linux) nebo Windows, v závislosti na vašem operačním systému.

Vzhledem k vašim zvláštním okolnostem s tím nemáte žádnou možnost. Musíte přehodnotit řešení. Možná byste místo WRITETOFILE mohli použít WRITETOCLOB a místo toho zařadit výsledek na straně klienta pomocí sqlplus




  1. Chyba při nastavování n_distinct pomocí proměnné plpgsql

  2. Jak RADIANS() funguje v MariaDB

  3. SQL dotaz přes více řádků

  4. Změna tabulky pomocí příkazu Sqitch Rework