Non conosco C# ma presumo che tu possa inviare solo singole istruzioni SQL o blocchi PL/SQL, non un elenco separato da punto e virgola. In ogni caso, exec
non è nessuno dei due (è una scorciatoia SQL*Plus supportata da alcuni IDE.)
Probabilmente devi inviare comandi separati come qualcosa del tipo:
create directory test_dir as 'C:\\'
e
begin run_query('SELECT {1} FROM {2} {3} ORDER BY {4}','TEST_DIR','{5}'); end;
(Nota PL/SQL usa il punto e virgola ma SQL non ha un terminatore di istruzione nativo, sebbene gli strumenti spesso richiedano un carattere di terminatore e il punto e virgola sia spesso l'impostazione predefinita.)