下面这条语句写在存储过程里,执行完成,也没有报错,但是找不到索引 i_test.
execute immediate 'CREATE INDEX i_test ON table1 (col1||col2)';如果把sql拿出来,在sqlplus里执行就没有问题,可以找到创建的索引,请问问题出在哪里?
CREATE INDEX i_test ON table1 (col1||col2);
execute immediate 'CREATE INDEX i_test ON table1 (col1||col2)';如果把sql拿出来,在sqlplus里执行就没有问题,可以找到创建的索引,请问问题出在哪里?
CREATE INDEX i_test ON table1 (col1||col2);
1 begin
2 execute immediate 'create index i_text on t(name)';
3* end;
SQL> /PL/SQL 过程已成功完成。SQL> select index_name from user_indexes where index_name='I_TEXT';INDEX_NAME
------------------------------
I_TEXT
怎么会没有那???记住:I_TEXT索引在表中查找的时候用大写,不要用i_text
SQL> create or replace procedure testi as
2 l_str varchar2(100);
3 begin
4 l_str := 'CREATE INDEX i_test ON test (col1||col2)' ;
5 dbms_output.put_line(l_str);
6 begin
7 execute immediate l_str;
8 exception when others then
9 dbms_output.put_line('Wrong');
10 end;
11 end;
12 /Procedure createdSQL> set serverout on;
SQL> exec testi;CREATE INDEX i_test ON test (col1||col2)PL/SQL procedure successfully completedSQL> select index_name, table_name from user_indexes where table_name = 'TEST';INDEX_NAME TABLE_NAME
------------------------------ ------------------------------
I_TEST TESTSQL> 没有问题啊