Önce yetkilerinden bahsedelim.
sequence yaratmak ve bunlar üzerinde çeşitli işlemler yapabilmek için aşağıdaki yetkilerin olması gerekmektir.
--kendi schemanda oluşturmak için
create sequence
--bütün schemalarda oluşturmak için
create any sequence
--bütün schemalarda değiştirmek için için
alter any sequence
--bütün schemalarda silme yetkisine sahip olmak için
drop any sequence
--DB üzerindeki butun sequencelere erişebilmek için
select any sequence
--en basit sequence yaratma komutu aşağıdadir.
CREATE SEQUENCE seq_deneme;
SELECT seq_deneme.NEXTVAL FROM dual;
--bu komutun default değerler ile yaptığı aslında
CREATE SEQUENCE DENEME_TS.seq_deneme
START WITH 1
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER;
--burada da görüldüğü gibi başlangıç değeri 1 bitiş değeri bir yıgın 9
--cycle şeklinde değildir. VS vs..
--denemelerde kullanmak için bir tablo yaratalım.
create table tablom as select object_id,object_name from all_objects where rownum<5;
--yatattığımız bir tabloya kayıt ekleyelim.
insert into tablom values (seq_deneme.nextval,'deneme_1')
commit;
--sequencenin şu anki değerini öğrenmek için aşağıdaki sordu işinjizi görecektir.
select seq_deneme.currval from dual;
--sequence değerini bir attıralim
select seq_deneme.nextval from dual;
--şimdi yeni değerine bakalim.
select seq_deneme.currval from dual;
--belirli bir değerden sequence başlatmak için aşağıdaki komut işimizi görecektir.
CREATE SEQUENCE seq_deneme_v1 START WITH 123;
select seq_deneme_v1.currval from dual;
-- ilk başta bunu kullanırsak aşağıdaki hatayı alırız.
-- ORA-08002: sira SEQ_DENEME_V1.CURRVAL henüz bu oturumda tanimlanmadi
-- bu hatadan kurtulmak için sequenceyi bir defa çalıştırmak gerekiyor.
select seq_deneme_v1.nextval from dual;
--bir sequence'i silmek için
drop sequence seq_deneme_v1 --komutunu kullanınız.
SELECT DBMS_METADATA.get_ddl ('SEQUENCE', 'DEN_SEQ') from dual;
--SQLPLUS ile sequencenin create script tam olarak görünmediği durumlarda
--aşağıdaki kod bloğu kullanılabilinir.
DECLARE
c_lob CLOB;
BEGIN
SELECT DBMS_METADATA.get_ddl ('SEQUENCE', 'DEN_SEQ')
INTO c_lob
FROM DUAL;
DBMS_OUTPUT.put_line (c_lob);
END;
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment