我试图通过选择查询填充数组,然后删除select查询中抓取的值。
DECLARE
TYPE name_list is varray(20) of VARCHAR2(30);
existingConstraints name_list:=name_list();
BEGIN
SELECT COUNT(1) INTO v_constraint_exists FROM user_constraints
WHERE constraint_name != 'some_value' AND table_name = 'some_value';
for i in NVL(existingConstraints.FIRST,0)..NVL(existingConstraints.LAST,-1) loop
#set($name=existingConstraints(i))
EXECUTE IMMEDIATE 'ALTER TABLE ${some_value} DROP CONSTRAINT ${name} DROP INDEX';
end loop;
END
但我得到了例外。有人可以建议我采取正确的方法。
答案 0 :(得分:0)
`DECLARE
TYPE name_list is varray(20) of VARCHAR2(30);
existingConstraints name_list:=name_list();
BEGIN
SELECT constraint_name INTO existingConstraints FROM user_constraints
WHERE constraint_name != 'some_value' AND table_name = 'some_value' AND constraint_type='U';
for i in NVL(existingConstraints.FIRST,0)..NVL(existingConstraints.LAST,-1) loop
#set($name=existingConstraints(i))
EXECUTE IMMEDIATE 'ALTER TABLE ${tableName} DROP CONSTRAINT ${name} DROP INDEX';
end loop;
END`
答案 1 :(得分:0)
我以稍微不同的方式做到了,但问题解决了,仅供参考。
eval(parse())