質問するログイン新規登録

質問編集履歴

2

コードの追加

2018/11/11 17:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -32,4 +32,43 @@
32
32
  execute empty_blocks('TERATAIL', 'SAMPLE');
33
33
 
34
34
  ```
35
- ひとまず、ここまではコードを書いたのですが、ここから先が全く思いつきません。何かアドバイスを宜しくお願いします。
35
+ ひとまず、ここまではコードを書いたのですが、ここから先が全く思いつきません。何かアドバイスを宜しくお願いします。
36
+
37
+
38
+ ```PL/SQL
39
+ set serveroutput on
40
+ execute empty_blocks('TERATEIL', 'SAMPLE');
41
+ CREATE OR REPLACE PROCEDURE empty_blocks(p_owner VARCHAR2, p_table VARCHAR2) IS
42
+ DECLARE
43
+ v_str VARCHAR2(2000);
44
+ v_num NUMBER;
45
+ v_block NUMBER;
46
+ BEGIN
47
+
48
+ SELECT blocks into v_block FROM dba_segments WHERE owner= p_owner
49
+ AND segment_name = p_owner AND segment_type='TABLE';
50
+
51
+
52
+ v_str := 'SELECT count(*) FROM'
53
+ ||' (SELECT DISTINCT dbms_rowid.rowid_relative_fno(ROWID) file_id,'
54
+ ||' dbms_rowid.rowid_object(ROWID) data_object, dbms_rowid.rowid_block_number(ROWID) block_nr FROM '
55
+ || p_owner
56
+ || '.'
57
+ || p_table
58
+ || ')';
59
+
60
+ EXECUTE IMMEDIATE v_str INTO v_num;
61
+
62
+
63
+ dbms_output.put_line(v_block - v_num);
64
+ END;
65
+ /
66
+ ```
67
+ ---------------------
68
+ エラーメッセージ
69
+ PLS-00905: object TEST.EMPTY_BLOCKS is invalid
70
+ ORA-06550: 行1、列126:
71
+ PL/SQL: Statement ignored
72
+ 06550. 00000 - "line %s, column %s:\n%s"
73
+ *Cause: Usually a PL/SQL compilation error.
74
+ *Action:

1

タグの追加

2018/11/11 17:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
File without changes