質問編集履歴

2

コードの追加

2018/11/11 17:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,81 @@
67
67
  ```
68
68
 
69
69
  ひとまず、ここまではコードを書いたのですが、ここから先が全く思いつきません。何かアドバイスを宜しくお願いします。
70
+
71
+
72
+
73
+
74
+
75
+ ```PL/SQL
76
+
77
+ set serveroutput on
78
+
79
+ execute empty_blocks('TERATEIL', 'SAMPLE');
80
+
81
+ CREATE OR REPLACE PROCEDURE empty_blocks(p_owner VARCHAR2, p_table VARCHAR2) IS
82
+
83
+ DECLARE
84
+
85
+ v_str VARCHAR2(2000);
86
+
87
+ v_num NUMBER;
88
+
89
+ v_block NUMBER;
90
+
91
+ BEGIN
92
+
93
+
94
+
95
+ SELECT blocks into v_block FROM dba_segments WHERE owner= p_owner
96
+
97
+ AND segment_name = p_owner AND segment_type='TABLE';
98
+
99
+
100
+
101
+
102
+
103
+ v_str := 'SELECT count(*) FROM'
104
+
105
+ ||' (SELECT DISTINCT dbms_rowid.rowid_relative_fno(ROWID) file_id,'
106
+
107
+ ||' dbms_rowid.rowid_object(ROWID) data_object, dbms_rowid.rowid_block_number(ROWID) block_nr FROM '
108
+
109
+ || p_owner
110
+
111
+ || '.'
112
+
113
+ || p_table
114
+
115
+ || ')';
116
+
117
+
118
+
119
+ EXECUTE IMMEDIATE v_str INTO v_num;
120
+
121
+
122
+
123
+
124
+
125
+ dbms_output.put_line(v_block - v_num);
126
+
127
+ END;
128
+
129
+ /
130
+
131
+ ```
132
+
133
+ ---------------------
134
+
135
+ エラーメッセージ
136
+
137
+ PLS-00905: object TEST.EMPTY_BLOCKS is invalid
138
+
139
+ ORA-06550: 行1、列126:
140
+
141
+ PL/SQL: Statement ignored
142
+
143
+ 06550. 00000 - "line %s, column %s:\n%s"
144
+
145
+ *Cause: Usually a PL/SQL compilation error.
146
+
147
+ *Action:

1

タグの追加

2018/11/11 17:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes