各种 DDL 语句可删除、重命名或更改准备好的对象引用的表的模式,但后续的执行该准备好的对象的尝试可能失败并报错误 -710,或可能导致预料不到的结果。
然而,当为直接地引用表的准备好的对象和例程启用自动的重新编译时,ALTER TABLE、CREATE INDEX 或 DROP INDEX 操作已更改了这些表,如果添加或删除索引,则这些限制不是必然适用的。这是 GBase 8s 的缺省行为。在更改表的模式之后,使用 SET ENVIRONMENT IFX_AUTO_REPREPARE 语句来启用或禁用自动的重新编译,且即使当启用自动的重新编译时,数据库服务器发出错误 -710 的地方的上下文。要获得更多关于这方面的信息,请参阅 IFX_AUTO_REPREPARE 环境选项。
然而,当 AUTO_REPREPARE 配置参数和 IFX_AUTO_REPREPARE 会话环境变量设置为禁用自动的重新编译时,将索引添加到准备好的语句间接地应用的表,可类似地导致准备好的语句无效。如果游标引用无效的准备好的语句,则即使 OPEN 语句包括 WITH REOPTIMIZATION 关键字,后续的 OPEN 语句也失败。在禁用自动的重新编译时,如果在间接地引用的表上添加索引,则您必须再次准备该语句并再次声明游标。如果游标是基于不再有效的准备好的语句,则您不可简单地重新打开游标。
相关的语句:CLOSE 子句、DECLARE 语句、DESCRIBE 语句、EXECUTE 语句、FREE 语句、OPEN 语句、SET AUTOFREE 语句 和 SET DEFERRED_PREPARE 语句
要获取关于与 PREPARE 语句相关的基本概念的信息,请参阅 GBase 8s SQL 教程指南。
要获取更多与 PREPARE 语句相关的高级概念的信息,请参阅 GBase 8s ESQL/C 程序员手册。