öncelik ile procederure yaratalım.
CREATE OR REPLACE PROCEDURE part_count (pin_table_name IN VARCHAR2)
IS
CURSOR s1
IS
SELECT /*+ parallel(t,8) */
partition_name AS v_part_name
FROM user_tab_partitions t
WHERE table_name = pin_table_name;
rec_s1 s1%ROWTYPE;
v_table_name VARCHAR2 (30);
v_dynsql VARCHAR2 (200);
v_sonuc VARCHAR2 (200);
BEGIN
v_table_name := pin_table_name;
OPEN s1;
LOOP
FETCH s1
INTO rec_s1.v_part_name;
EXIT WHEN s1%NOTFOUND;
v_dynsql :=
'select /*+ parallel(t,8) */ count(1) as v_sonuc from '
|| v_table_name
|| ' partition ('
|| rec_s1.v_part_name
|| ') t';
EXECUTE IMMEDIATE v_dynsql
INTO v_sonuc;
DBMS_OUTPUT.put_line (v_dynsql || ' --' || v_sonuc);
--DBMS_OUTPUT.put_line (v_sonuc);
-- DBMS_OUTPUT.put_line ('DENEME');
END LOOP;
CLOSE s1;
END;
/
--partitionlu yapıya sahip bir tablomuz olması gerekiyor. Bunuda hemen yaratalım.
create table part_deneme
(OWNER VARCHAR2(30 BYTE) NOT NULL,
OBJECT_NAME VARCHAR2(30 BYTE) NOT NULL,
SUBOBJECT_NAME VARCHAR2(30 BYTE),
OBJECT_ID NUMBER NOT NULL,
DATA_OBJECT_ID NUMBER,
OBJECT_TYPE VARCHAR2(19 BYTE),
CREATED DATE NOT NULL,
LAST_DDL_TIME DATE NOT NULL,
TIMESTAMP VARCHAR2(19 BYTE),
STATUS VARCHAR2(7 BYTE),
TEMPORARY VARCHAR2(1 BYTE),
GENERATED VARCHAR2(1 BYTE),
SECONDARY VARCHAR2(1 BYTE)
)
partition by range (object_id)
(partition part_01 values less than (20000) tablespace users,
partition part_02 values less than (40000) tablespace example,
partition part_03 values less than (60000) tablespace users,
tabloyu ayrattık şimdi içine verileri ekleyelim.
insert into part_deneme select * from all_objects
--sonra bu nu çalıştıralım.
DECLARE
PIN_TABLE_NAME VARCHAR2(200);
BEGIN
PIN_TABLE_NAME := NULL;
HR.PART_COUNT ('PART_DENEME');
COMMIT;
END;
1 comment:
databaseden aldığım dataları bir tablo içerisinde listeletiyorum..
her kayıdın yanında bir düzenle linki veriyorum herhangi bir kaydın yanında ki düzenle linkini tıkladığımda o kayıdın içerisine girmesini istiyorum bunu id girerek yaptım fakat bu şekilde nasıl yapacağımı bilmiyorum... yardım lütfen...
Post a Comment