in reply to ODBC error message

It is a limitation of SQL Server that it can only have a single active statement on a connection. Many other databases will support multiple active statements on the same connection.

You will need to rewrite your code to get around the limitation. I have usually seen this limitation when looping over the results of one query and performing another query on each row. One solution is to pull all the data into memory instead of looping over each element of the results. Another is to use a second connection for the second statements.

DBI will automatically finish the statement when all the results have been read. If you aren't reading all the results from a query, then you will need to call $sth->finish() manually. There are convienence function like selectrow_hashref.