このエラーを解決するのを手伝ってください
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 is FETCH lock_info INTO lockinfo; -- データベースのロック結果をこの tsinfo に入れたい)
パッケージの作成または置換 final_package as
PROCEDURE final_procedure(varchar2 の var1、varchar2 の dbinfo);
END final_package;
/
パッケージ本体の作成または置換 final_package IS
PROCEDURE final_procedure(var1 in varchar2, dbinfo out varchar2) IS
始める
IF var1 = 'a'
------ /* 表領域名、パーセンテージを取得 */ ----
それから
宣言する
tsinfo varchar2(5000); ---- /* テーブルスペースの結果をこの tsinfo に入れたい */----
CURSOR tbsp は、a.TABLESPACE_NAME を選択します。
Tablespace,round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2)
なので
からのパーセンテージ (TABLESPACE_NAME を選択、sum(BYTES) BYTES から
TABLESPACE_NAME による sys.dba_data_files グループ) a、
(選択する
TABLESPACE_NAME、sys.dba_free_space からの sum(BYTES) BYTES
グループ化
TABLESPACE_NAME) b
どこ
a.TABLESPACE_NAME = b.TABLESPACE_NAME (+)
((a.BYTES-b.BYTES)/a.BYTES) desc による順序。
始める
FOR each_data1 大さじ
ループ
FETCH tbsp INTO tsinfo; --- /* テーブルスペースの結果をこの tsinfo に入れたい */ ---
エンドループ;
大さじを閉じます。
終わり;
---- /* データベースのロック状態を取得 */ ----
ELSIF var1 = 'b' THEN
宣言する
lockinfo varchar2(1500);
CURSOR lock_info は SELECT vh.sid locked_sid です。
vw.sid waiter_sid,
対ステータスステータス、
対プログラム program_holding、
vsw.program program_waiting
FROM v$lock vh,
v$lock vw,
v$セッション対、
v$session vsw
WHERE(vh.id1, vh.id2) IN (SELECT id1, id2
FROM v$ロック
WHERE リクエスト = 0
交わる
id1、id2を選択
FROM v$ロック
WHERE lmode = 0)
AND vh.id1 = vw.id1
AND vh.id2 = vw.id2
AND vh.request = 0
および vw.lmode = 0
AND vh.sid = vs.sid
AND vw.sid = vsw.sid;
始める
FOR each_data in lock_info
ループ
lock_info を lockinfo にフェッチします。-- データベースのロック結果をこの tsinfo に入れたい
エンドループ;
CLOSE lock_info;
終わり;
END IF;
終わり;
終わり;
/