Stored procedures aren't a panacea for SQL injection. The real answer is to use parameters for any user input.
Otherwise if you're concatenating strings to invoke your stored proecedures you're in the same boat.
Otherwise if you're concatenating strings to invoke your stored proecedures you're in the same boat.
For example, when querying user uploaded databases (not a typical use case), the SQL query needs to include the table name. At least with SQLite (unsure about PostgreSQL), table names can't be bound in a parameter. They need to be part of the non parameterised query string, thus string smashing.
Field/column names are probably similar too, though I haven't checked (yet).
It should be able to check if an invalid column or table name is used.