Neměli byste se snažit zabránit vkládání SQL pouze na úrovni databáze. Jakmile se tam dostali, většinou už dostali vás. Měli byste použít parametry, maskovat vstup a odstranit špatné znaky již ve vrstvě výše. Nástroje (Frameworks?) jako Entity Framework automaticky odstraňují nebezpečné znaky.
Pomocí DBMS_ASSERT.ENQUOTE_NAME
se zde daří velmi dobře, ale doporučil bych to udělat také ve vrstvách výše.
Obecné pravidlo (které zde dodržujete):Používejte zavedené a osvědčené bezpečnostní mechanismy, nevynalézejte je znovu!
Navíc prohlášení jako
select * from users where username = 'IAm"WayUp';
je naprosto legální a není nebezpečný.
A jak voláte funkci/proceduru v DB? I tam jsi zranitelný, že?.