2016-10-14 5 views
0

異なるチャネルに対して異なるデータベースシーケンスを維持する必要があるという要件が1つあります。 EX:チャンネルに基づいてABC-SQN1、XYZ-1、およびシーケンス番号をインクリメントする必要があります。私たちが達成できる方法はありますか?異なるチャネルで異なるデータベースシーケンスを作成する方法は?

ありがとうございました

+0

「異なるチャネルで異なるデータベースシーケンスを維持する必要がある」という要件の背後にある理由を説明してください。また、明確な例を示してください。ありがとう。 –

答えて

1

あなたの質問は不明です。より詳細な要件を記述してください。私はあなたがいくつかの配列を有し、条件付きので、それらをインクリメントしたい理解:直接

create sequence chanel1_seq INCREMENT BY 1 START WITH 1; 
create sequence chanel2_seq INCREMENT BY 1 START WITH 1; 
create sequence chanel3_seq INCREMENT BY 1 START WITH 1; 

と、関数によって設定されたアクセスシーケンスではない:

create or replace function get_seq_val(chanell in varchar2) return varchar2 is 
begin 
if (chanell = 'CH1') then 
return 'CH1' || chanel1_seq.nextval; 
elsif (chanell = 'CH2') then 
return 'CH2' || chanel2_seq.nextval; 
elsif (chanell = 'CH3') then 
return 'CH3' || chanel3_seq.nextval; 
end if; 
return ''; 
end; 

として値を取得する:

select get_seq_val('CH1') from dual; 
+0

こんにちはKacper、助けてくれてありがとう、私たちの要件はここで説明したものと同じです。私は提案されたコードを更新しました。ダイナミックなシーケンス名の作成に関する問題に直面しています。私はPL-SQLの初心者ですが、それがサポートされているかどうかをお聞かせください。コード: '関数の作成または置換get_seq_val(varchar2でのシャネル名)return varchar2 is Channel_identifier VARCHAR2(10); Sequencename varchar2(10):= '_ seq'; SQName varchar2(10); begin Channel_identifier:= chanelname; SQName:= concat(Channel_identifier、Sequencename); return SQName.nextval; end; ' – Sushma

関連する問題