1

このエラーを解決するのを手伝ってください

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;

終わり;

終わり;

/

4

1 に答える 1

1

カーソル tbsp は 2 つの値を選択します。

CURSOR tbsp is 
  select a.TABLESPACE_NAME as Tablespace,
         round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2) AS Percentages 

FETCH2 つの変数 (または 2 つのフィールドを持つレコード) に入れる必要があります。

FETCH tbsp INTO tsinfo, percentage; -- You need to declare percentage

フォーマットがひどいので、他のエラーがないかコードをスキャンしないことにしました。

于 2013-10-24T09:12:03.033 に答える