Я использую IBM DB2 9.7.2 в Debian GNU / Linux. Мне нужен условный индекс DROP, только если он существует. Поскольку это не поддерживается, я написал процедуру, которая принимает IN idx_name VARCHAR (128) в качестве имени индекса. В этой процедуре я проверяю, существует ли индекс с таким именем в SYSCAT.INDEXES, и если да, я выполняю
DROP INDEX idx_name;
Но, очевидно, DROP INDEX не принимает строку.
В качестве альтернативы я попытался использовать SYSPROC.SYSTS_DROP (), но он выдал ошибку:
SQL20427N Ошибка во время процедуры администрирования текстового поиска или
команда. Сообщение об ошибке «CIE00340 не удается запустить исполняемую программу
"Cieadmsv". ". SQLSTATE = 38H14
Возможно, я мог бы изменить процедуру, чтобы удалить этот индекс и перехватить исключение, чтобы не возникало ошибок, если его не существует, но я все еще не знаю: как я могу заставить DROP INDEX принимать переменную