帮我解决这个错误
29/5 PL/SQL:忽略 SQL 语句
29/5 PLS-00394:FETCH 语句的 INTO 列表中的值数量错误
(29 是 FETCH tbsp INTO tsinfo;)
62/5 PL/SQL:忽略 SQL 语句
62/5 PLS-00394:FETCH 语句的 INTO 列表中的值数量错误
( 62 是 FETCH lock_info INTO lockinfo; -- 我想把数据库锁结果放到这个 tsinfo 中)
创建或替换包 final_package 为
PROCEDURE final_procedure(var1 in varchar2, dbinfo out varchar2);
结束 final_package;
/
创建或替换包体 final_package 是
PROCEDURE final_procedure(var1 in varchar2, dbinfo out varchar2) IS
开始
如果 var1 = 'a'
------ /* 获取表空间名称,百分比 */ ----
然后
宣布
tsinfo varchar2(5000); ---- /* 我想把表空间结果放到这个 tsinfo */----
CURSOR tbsp 是选择 a.TABLESPACE_NAME 作为
表空间,round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2)
作为
百分比来自 (select TABLESPACE_NAME, sum(BYTES) BYTES from
sys.dba_data_files 按 TABLESPACE_NAME 分组) a,
(选择
TABLESPACE_NAME, sum(BYTES) BYTES 来自 sys.dba_free_space
通过...分组
表空间名称)b
在哪里
a.TABLESPACE_NAME = b.TABLESPACE_NAME (+)
按 ((a.BYTES-b.BYTES)/a.BYTES) desc 排序;
开始
FOR each_data1 in tbsp
环形
将 tbsp 提取到 tsinfo 中;--- /* 我想把表空间结果放到这个 tsinfo */ ---
结束循环;
关闭汤匙;
结尾;
---- /* 获取数据库锁定状态 */ ----
ELSIF var1 = 'b' 那么
宣布
锁定信息 varchar2(1500);
CURSOR lock_info 是 SELECT vh.sid lock_sid,
vw.sid waiter_sid,
vs.status 状态,
vs.program program_holding,
vsw.program program_waiting
从 v$lock vh,
v$锁定大众,
v$会话与,
v$会话vsw
在哪里(vh.id1,vh.id2)在(选择 id1,id2
来自 v$lock
WHERE 请求 = 0
相交
选择 id1,id2
来自 v$lock
其中 lmode = 0)
和 vh.id1 = vw.id1
和 vh.id2 = vw.id2
和 vh.request = 0
和 vw.lmode = 0
和 vh.sid = vs.sid
和 vw.sid = vsw.sid;
开始
FOR lock_info 中的 each_data
环形
FETCH lock_info INTO lockinfo; -- 我想把数据库锁定结果放到这个 tsinfo
结束循环;
关闭 lock_info;
结尾;
万一;
结尾;
结尾;
/