select to_char(<column-value>, 'FM0000000000') from serialNumber;
あなたの要件の背後にあるものはわかりませんが、おそらく、シーケンスを提供する方が適切です。テーブルを使用して一意の ID を生成することは、通常、検討すべき不適切な選択です。
sequenceを伴うストアド プロシージャに関しては、構築する基本的なフレームは次のようになります。
シーケンス:
create sequence serial_number_seq;
ストアド プロシージャ (実際には関数)
create or replace function next_serial_number return varchar2 as
serial_number_ number;
MAX_SR_NO number;
begin
select serial_number_seq.nextval into serial_number_ from DUAL;
Select MAX(sr_no) INTO MAX_SR_NO from serialNumber;
serial_number_ := GREATEST(serial_number_, MAX_SR_NO);
return to_char(serial_number_, 'FM0000000000');
end next_serial_number;
/
テスト
begin
dbms_output.put_line(next_serial_number);
dbms_output.put_line(next_serial_number);
dbms_output.put_line(next_serial_number);
dbms_output.put_line(next_serial_number);
dbms_output.put_line(next_serial_number);
dbms_output.put_line(next_serial_number);
-- in the place where you use the serial number the greatest
-- of inserted value from external system or sequence value will be used
final_value:= next_serial_number;
end;
/