Я хочу создать таблицу внутри процедуры. я попытался поместить запрос создания в строку, а затем выполнить немедленную строку. например:Как создать таблицу внутри процедуры в oracle?
create or replace procedure hr.temp is
var1 varchar2(4000);
begin
var1:='create table hr.temp(
id number)';
execute immediate var1;
end temp;
но когда я выполнить эту процедуру, я получаю ошибку:
ORA-00911: invalid character
ORA-06512: at "SYS.TEMP", line 6
.
.
.
есть ли способ я могу это сделать?
Do *** NOT *** создайте процедуры в учетной записи SYS. Не делай этого. Когда-либо. (После того, как вы переместите эту процедуру в правильную учетную запись: внутри динамического SQL вы не должны указывать символ ';'. Execute instant может выполнять только один оператор в любом случае, поэтому не требуется символ окончания) –
из-за вашего предложения я его изменил для hr-схемы, но результат тот же –
я удалил символ ';', теперь, когда я выполняю процедуру, она начинается, но никогда не заканчивается, это похоже на то, что процедура находится в цикле, который никогда не заканчивается! –