はじめまして。
各部門に所属している人の件数を配列に格納して処理したいと考えています。
(例)テーブル名:buhyo
SQL:select bumon_cd,count(*) from buhyo group by bumon_cd order by bumon_cd
上記SQLの結果↓
部門コード(bumon_cd) count(*)
---------------------------------
A11 100
A12 150
A13 200
上の結果であるA11と100、A12と150、A13と200をそれぞれ配列に入れたくて
PLSQLで以下のロジックを作成しましたが、うまくいかなくて困っています。
<ロジック>
DECLARE
CURSOR KEKKA IS SELECT BUMON_CD,BUMON_CD,COUNT(*) RCNT FROM BUHYO
GROUP BY BUMON_CD ORDER BY BUMON_CD;
TYPE BUMON_TAB IS TABLE OF KEKKA%ROWTYPE INDEX BY PLS_INTEGER;
WK_ARRAY BUMON_TAB;
BEGIN
FOR WK_BUMON IN KEKKA LOOP
I := I + 1;
WK_ARRAY(I).BUMON_CD = WK_BUMON.BUMON_CD;
WK_ARRAY(I).RCNT = WK_BUMON.RCNT;
DBMS_OUTPUT.PUT_LINE(WK_ARRAY(I).BUMON_CD || ',' || WK_ARRAY(I).RCNT);
END LOOP;
END;
/
これで出力しようとしてもWK_ARRAY配列に部門コードと件数が入りません。
どのようにすれば各部門とその対になる件数を配列に入れることが
可能でしょうか?ご教授ください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
変数Iが宣言されていないですし、代入文もおかしいです。
元のプログラムを極力変えずにいくと、
DECLARE
CURSOR KEKKA IS SELECT BUMON_CD,COUNT(*) RCNT FROM BUHYO
GROUP BY BUMON_CD ORDER BY BUMON_CD;
TYPE BUMON_TAB IS TABLE OF KEKKA%ROWTYPE INDEX BY PLS_INTEGER;
WK_ARRAY BUMON_TAB;
I PLS_INTEGER := 0; --追加
BEGIN
FOR WK_BUMON IN KEKKA LOOP
I := I + 1;
WK_ARRAY(I).BUMON_CD := WK_BUMON.BUMON_CD; -- = を := に修正
WK_ARRAY(I).RCNT := WK_BUMON.RCNT;-- = を := に修正
DBMS_OUTPUT.PUT_LINE(WK_ARRAY(I).BUMON_CD || ',' || WK_ARRAY(I).RCNT);
END LOOP;
END;
/
こんな感じでしょうか。
この場合、添え字は1から始まることになります。
yamada_gさん
お世話になります。
変数Iの宣言が必要なのですね。それから=ではなく:=ですね。
すいません。ご指摘ありがとうございます。
教えていただいた内容で配列に正しく格納できました。
本当にありがとうございます。
いろいろと勉強になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- 工学 制御工学に関する質問です。 離散時間システムの状態方程式は x(k+1)=Ax(k)+Bu(k) と 1 2023/01/16 12:18
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- PHP PHP MySql ページング 2 2022/09/20 06:38
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Oracle SQLの書き方について 1 2023/04/13 09:54
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- テクノ・ハウス 質問の音楽ジャンルに詳しい方、よろしくお願いします。 2 2023/08/16 21:55
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
重複するキーから一番古い年月...
-
2つのテーブルから条件に一致...
-
遅延制約について
-
日付の最大値を検索条件にする方法
-
SQL文について(片方のテーブル...
-
ACCESS 一つのフィールドに複...
-
ACCESSのコンパイルエラーについて
-
主キーの変更
-
Accessユニオンクエリーで2つ...
-
PLSQLで集計関数の値を配列に入...
-
Accessでフィールドを比較した...
-
3つ以上のテーブルをUNIONする...
-
ACCESSのSQLで、NULLかNULLでな...
-
ACCESS2007 フォーム 「バリア...
-
SELECT文でのデッドロックに対...
-
クエリのキャンセルがいつにな...
-
accessテーブル作成クエリを実...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
行方向のデータを横に並べる
-
PLSQLの識別子エラー
-
Accessでフィールドを比較した...
-
主キーの変更
-
Inner join と Left joinの明...
-
続.ORACLEのSELECTのソートに...
-
商品コード番号を入力すると商...
-
SQL 2つのテーブルとSUBSTRING...
-
自分自身への矢印
-
ACCESSのコンパイルエラーについて
-
ACCESS2000でDCount関数の使い方
-
Accessユニオンクエリーで2つ...
-
請求と入金のテーブルの作成の...
-
OracleのUnion内でそれぞれのOr...
-
VIEWでテーブルの集計結果...
-
【Access初心者】最大値と次に...
おすすめ情報