2楼正解,用cast强制就行了
SQL> SELECT resource_name
2 ,(CASE WHEN max_utilization=0 THEN cast(NULL as number) ELSE round(current_utilization * 100 / max_utilization, 2) END)
AS "USED_RATE(%)"
3 ,decode(max_utilization,0,cast(NULL as number),round(current_utilization * 100 / max_utilization, 2)) AS "USED_RATE"
4 FROM v$resource_limit ORDER BY 2 DESC NULLS LAST
5 ;
RESOURCE_NAME USED_RATE(%) USED_RATE
------------------------------------------------------------ ------------ ----------
max_shared_servers 100 100
sort_segment_locks 100 100
enqueue_resources 100 100
max_rollback_segments 100 100
processes 87.88 87.88
sessions 85.71 85.71
enqueue_locks 58.62 58.62
temporary_table_locks 0 0
cmtcallbk 0 0
ges_big_msgs
ges_rsv_msgs
gcs_resources
gcs_shadows
dml_locks
transactions
branches
ges_procs
k2q_locks
parallel_max_servers
ges_reg_msgs
ges_ress
ges_locks
ges_cache_ress
已选择23行。
已用时间: 00: 00: 00.03
SQL> 4
4* FROM v$resource_limit ORDER BY 2 DESC NULLS LAST
SQL> c/2/3
4* FROM v$resource_limit ORDER BY 3 DESC NULLS LAST
SQL> /
RESOURCE_NAME USED_RATE(%) USED_RATE
------------------------------------------------------------ ------------ ----------
max_shared_servers 100 100
sort_segment_locks 100 100
enqueue_resources 100 100
max_rollback_segments 100 100
processes 87.88 87.88
sessions 85.71 85.71
enqueue_locks 58.62 58.62
temporary_table_locks 0 0
cmtcallbk 0 0
ges_big_msgs
ges_rsv_msgs
gcs_resources
gcs_shadows
dml_locks
transactions
branches
ges_procs
k2q_locks
parallel_max_servers
ges_reg_msgs
ges_ress
ges_locks
ges_cache_ress
已选择23行。
已用时间: 00: 00: 00.07