什么是动态SQL语句?¶
大多数的应用程序都是为某个具体的用途而设计的。在这种情况下,事务处理的性质或''结构''在很大程度上是可以预先确定的,就是说程序设计者事先知道有可能修改哪个表,需要插入或更新哪个字段以及它们的数据类型和约束是什么。
然而,有一些应用可能需要在运行时接受或处理很多种类的SQL语句而不管它们是简单的删除语句还是更新语句或是更复杂的查询语句。在这些情况下,程序设计者希望程序能接受并处理运行时加入的任何有效的SQL语句。程序对SQL语句及其结构都不了解的情况是很可能的。例如,一个较简单的esql*C程序可能要求用户在程序运行时输入员工号码以便找到需要更新的记录;一个稍微复杂的程序可能要求用户在运行时动态地确定使用哪一个SQL语句,比如弹出一个包含INSERT,CREATE,SELECT或其它合法SQL语句的菜单,让用户选择合适的SQL语句,并且需要用户确定语句将要操作的对象名,如数据库名、表名、列名等,所有的信息都确定以后,应用程序执行经过用户确认的SQL语句,完成事务处理。通过运行时动态选择语句和其它信息,这种方式给程序设计者和终端用户的程序实现带来极大的灵活性。
动态SQL语句是指动态定义的SQL语句,即编译时还不能确定结构的SQL语句。
和静态SQL不同,动态SQL语句没有把语句嵌入在源程序中,而是存储在字符串里,或者在运行时由程序构造。它们可以交互式输入,也可以从文件读取。