我在Debian GNU / Linux上使用IBM DB2 9.7.2。我需要一个条件DROP INDEX,只有它存在。由于它不受支持,我编写了一个接受 IN idx_name VARCHAR(128)作为索引名称的过程。在过程中,我检查SYSCAT.INDEXES中是否存在具有该名称的索引,如果是,则执行
DROP INDEX idx_name;
但显然DROP INDEX不接受字符串。
或者我尝试使用SYSPROC.SYSTS_DROP(),但它给了我一个错误:
SQL20427N文本搜索管理过程中发生错误或 命令。错误消息是“CIE00340无法启动可执行程序 “cieadmsv”。 “.SQLSTATE = 38H14
我可能会修改一个删除该索引并捕获异常的过程,这样如果不存在则没有错误但是我仍然不知道:如何让DROP INDEX接受变量
答案 0 :(得分:2)
DROP INDEX
不接受标识符的参数(您也不能使用SELECT
语句执行此操作)。我希望这与尝试验证/准备语句的优化器有关 - 毕竟你只能为列内容指定它们。
您有两种选择: