我在這裏看到了同樣的問題Create a Sequence with START WITH from Query但它不起作用。它有12票,所以我不知道爲什麼它不適合我。如何創建一個以查詢值開始的序列
這是我有:
declare
l_new_seq INTEGER;
begin
select max(expense_detailid) + 1
into l_new_seq
from expense_detail;
execute immediate 'create sequence expense_detail_seq
start with ' || l_new_seq || ' increment by 1';
end;
/
,這是錯誤我得到:
ORA-06550: line 3, column 17:
PLS-00103: Encountered the symbol "create sequence expense_detail_seq start with " when expecting one of the following:
:= . (@ % ;
The symbol ":=" was substituted for "create sequence expense_detail_seq start with " to continue. (DBD ERROR: error possibly near <*> indicator at char 27 in '
BEGIN
immediate <*>'create sequence expense_detail_seq start with ' || l_new_seq || ' increment by 1';
END;
')
ORA-00900: invalid SQL statement
任何想法?謝謝!
你說你在做什麼很好,但是你顯示的錯誤信息表明你實際上在運行不同的東西。 'execute'關鍵字缺失(這會導致此錯誤),並且您有一個額外的開始/結束包裝。我想知道如果你的客戶端(我猜這是一個DBD引用的Perl腳本?)正在用'exec'取代'execute',並且可能運行單獨的語句。引用的行號令人困惑。如果你從SQL * Plus提示符執行'exec immediate ...',你會得到完全的結果,除了它會說第1行。如果它在腳本中,你能顯示上下文嗎? –
適用於我:http://sqlfiddle.com/#!4/4d6f7/1您使用哪種工具來運行語句?也許它不識別'/'分隔符? –
我創建了一個.sql文件,我使用yasql來加載文件。 –