我只是PL SQL的初学者,并试图在Oracle 11g快递版上使用PL SQL探索查询。我无法使用PL SQL过程调用创建索引。我收到错误错误报告:ORA-06550
BEGIN
CREATE INDEX employee_empid_index ON employee(empid);
END;
我应该在我的代码中进行哪些修改?
答案 0 :(得分:2)
您不应该在PL / SQL中使用DDL查询。 PL / SQL应该用于运行时的事情,比如将数据从一个表提取到另一个表(例如,安排一个作业,每小时将数据从一个表复制到另一个表进行备份)。表创建,索引创建应该事先用普通的sql完成。
简而言之,PL / SQL不是为了完成DDL的工作。但是,允许在PL SQL中使用一些DDL语句。 This article解释得很好
答案 1 :(得分:2)
在CREATE TABLE
上下文中不允许使用DDL语句(例如CREATE INDEX
..或PL/SQL
); (PL / SQL上下文介于BEGIN
和END
之间。
但是,您可以使用PL/SQL
块中的动态SQL语法执行它们。
实施例
BEGIN
EXECUTE IMMEDIATE 'CREATE INDEX employee_empid_index ON employee(empid);'
END;
或者只是在SQL
上下文中执行它们。
CREATE INDEX employee_empid_index ON employee(empid);
答案 2 :(得分:0)
在这种情况下,你不能使用"开始"和"结束"条款,删除这些条款并再试一次。