I started with some small C programs; I found that if I'm calling two SQL prodecures `f2(a, b)` and then `f1(c)` (note that `f2` is called first and it has more parameters than `f1`), I have to call `SQLFreeStmt(hstmt, SQL_RESET_PARAMS)` before calling `f1()`.

So I think it should be necessary to call `SQLFreeStmt(hstmt, SQL_RESET_PARAMS)` here, but in this case it works well without that... I know they look scary and confusing; I'm scared and confused too...