Du bör inte försöka förhindra SQL-injektion endast på databasnivå. När de väl kom dit har de för det mesta redan fått dig. Du bör använda parametrar, maskera inmatning och ta bort dåliga tecken redan i lagret ovan. Verktyg(Frameworks?) som Entity Framework tar automatiskt bort farliga tecken.
Använder DBMS_ASSERT.ENQUOTE_NAME
går väldigt bra här, men jag rekommenderar att du gör det här också i lagren ovan.
Allmän regel (som du följer här):Använd säkerhetsmekanismer som är etablerade och beprövade, uppfinn dem inte på nytt!
Dessutom ett uttalande som
select * from users where username = 'IAm"WayUp';
är absolut lagligt och inte farligt.
Och hur kallar man funktionen/proceduren i DB? Du är sårbar där också, eller hur?