我正在为依赖于Oracle数据库的产品编写模式升级脚本。在某个区域,我需要在一个表上创建索引,但前提是该索引不存在。在Oracle脚本中是否有一种简单的方法来检查我已知名称的索引是否存在?
类似于SQL Server中的以下代码: 如果(SELECT * FROM SYSINDEXES WHERE NAME = 'myIndex')不存在 // 然后创建myIndex
从user_indexes表中查询索引名称为'myIndex'的索引数量。
但是sqlplus不支持IF语句,所以您需要使用匿名PL / SQL块,并使用EXECUTE IMMEDIATE执行DDL操作。
DECLARE
i INTEGER;
BEGIN
SELECT COUNT(*) INTO i FROM user_indexes WHERE index_name = 'MYINDEX';
IF i = 0 THEN
EXECUTE IMMEDIATE 'CREATE INDEX myIndex ...';
END IF;
END;
/
编辑:正如指出的那样,Oracle将未加引号的对象名称存储为全部大写。