我尝试了几件事,但这是最后一件事。这是在SQL Developer中。我在各种尝试中都遇到了错误,但我不知道该怎么做。
declare
jm varchar2;
begin
exec :jm := DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE');
dbms_output.put_line(jm);
end;
/
如何在SQL Developer中查看ANALYZE_SCHEMA结果?我打开了DBMS输出,这可行,
declare
message varchar2(20):='hello johnny';
begin
dbms_output.put_line(message);
end;
/
我也试过了,
declare
jm varchar2;
begin
dbms_output.put_line(DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE'));
end;
/
它说PLS-00222:没有名称' ANALYZE_SCHEMA'存在于此范围内。
答案 0 :(得分:1)
DBMS_UTILITY.ANALYZE_SCHEMA
是一个程序,而不是函数。在PL / SQL中,您无法像函数一样直接读取过程的输出,因为没有返回值。从sqldeveloper
/ sqlplus
调用过程的语法是
EXEC DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE');
OR
BEGIN
DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE');
END;
分析的统计数据在Oracle的数据字典中更新,并且可以通过以下查询(owner = 'SCOTT'
)查看您的案例
SELECT owner, table_name, tablespace_name, num_rows, blocks, empty_blocks,
avg_row_len, sample_size, last_analyzed
FROM dba_tables
WHERE UPPER (owner) = 'HR'
ORDER BY owner, table_name;
示例输出
OWNER TABLE_NAME TABLESPACE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANA
--------- ------------------- ------------------- ---------- ---------- ------------ ----------- ----------- --------
HR REGIONS USERS 4 5 3 17 4 20-10-17
HR TQ84_COMPARE USERS 3 5 3 11 3 20-10-17
HR TT USERS 10 5 3 22 10 20-10-17