私はテーブルを持っていますPersonにはpersonName、personIdが含まれ、プライマリを指定せずにテーブルにいくつかの値を追加しました。テーブルPersonの値は次のとおりです。
('muni',1)
('Ganesh',1)
主キーをpersonIdとして追加し、列を自動生成として変更する必要があります。そこで、トリガーを生成するための次のクエリによってシーケンスを生成しようとしました。
declare
id number;
begin
select max(rownum)+1 into id from Person;
execute immediate 'create sequence personseq start with '||to_char(id);
end;
値がテーブルにあるときに上記のクエリを実行すると、正しく実行されますが、テーブルにエントリがないことを意味する空のテーブルがある場合、上記のクエリはシーケンスを生成していません。
ifステートメントでも試してみました。
declare
id number;
begin
select max(rownum)+1 into id from Person;
if (id=null) then
execute immediate 'create sequence personseq start with '||to_char(1);
else
execute immediate 'create sequence personseq start with '||to_char(id);
end if;
end;
システムはエラー番号がORA01722
であると言います。これは私が無効な番号を付けた番号を示します。しかし、どこに間違いがあるのかわかりませんか?
どんな助けでも大歓迎です。