C#はわかりませんが、セミコロンで区切られたリストではなく、個々のSQL文またはPL/SQLブロックのみを送信できると思います。いずれにせよ、exec
どちらでもありません(一部のIDEでサポートされているSQL * Plusショートカットです)。
おそらく、次のような個別のコマンドを送信する必要があります。
create directory test_dir as 'C:\\'
および
begin run_query('SELECT {1} FROM {2} {3} ORDER BY {4}','TEST_DIR','{5}'); end;
(PL / SQLはセミコロンを使用しますが、SQLにはネイティブのステートメントターミネータがありませんが、ツールではターミネータ文字が必要になることが多く、セミコロンがデフォルトであることがよくあります。)