in reply to Re: SQL Parsing
in thread SQL Parsing

Good points. SQL::Statement only checks those kinds of things on execute(), not on prepare(). For example it dies on prepare() if you use a column name that isn't a valid SQL identifier but prepare() succeeds if you use a non-existant column name - it only finds that out later. For example, it errors if a column name exists in two tables and your SQL doesn't specigy which table the name refers to, but it only checks for that and dies on execute(). If you have the database available and wanted to use it to check the column names without actually executing anything you'd probably be able to just grab the parts of execute() that check the database tables for actual column names.

update :Another option might be to create a hash structure of the table/columns you expect to encounter and tweak the return from SQL::Statement to fill in table information from that when the module was not able to get it from the SQL.