在Oracle SQL中,绑定变量能有效解决重编译问题。
未使用绑定变量的语句:
sprintf(sqlstr, \"insert into scott.test1 (num1, num2) values (%d,%d)\", n_var1, n_var2);
EXEC SQL EXECUTE IMMEDIATE :sqlstr;
EXEC SQL COMMIT;
使用绑定变量的语句:
strcpy(sqlstr, \"insert into test (num1, num2) values (:v1, :v2);\");
EXEC SQL PREPARE sql_stmt FROM :sqlstr;
EXEC SQL EXECUTE sql_stmt USING :n_var1, :n_var2;
EXEC SQL COMMIT;
通过使用绑定变量,SQL语句的重编译次数可以显著减少,从而提升执行效率。