下記PLSQLを実行した時に(sqlplus上で、@XXXX.SQLと実行)
WCOUNT :=WCOUNT + 1; エラー
PLS-00201: 識別子WCOUNTを宣言してください
のエラーがでます
宣言をしているのですがわからず、お助けください
また、他にもこのエラーを処置したあとに問題と
なりそうな箇所があれば指摘お願いします
-やろうとしてること
(1)テーブルA を、男子を出席順に読み込んでその読み込んだ順番に
1から番号をふり、テーブルBへ新規追加する
(2)テーブルAからテーブルBに新規追加していない女子を、出席順に読み込んで
1から番号をふり、テーブルBへ新規追加する
(3)テーブルBのKEYは順番のみ
(4)テーブルBのINSERT分は、今後機能追加する予定なのでNOT IN使用する
-組んだPL/SQL(2つのINSETを1つのファイルに記述しています)
DECLARE
WCOUNT number;
CURSOR カーソル IS
SELECT 出席番号,名前,成績 FROM テーブルA
ORDER BY 出席番号;
BEGIN
FOR r IN カーソル LOOP
INSERT INTO テーブルB
(r.順番, r.名前,r.出席番号)
VALUES (WCOUNT,r.名前);
COMMIT;
WCOUNT :=WCOUNT + 1;
END LOO;
/
END;
DECLARE
CURSOR カーソル IS
SELECT 出席番号,名前,成績 FROM テーブルA A
WHERE A.出席番号 NOT IN (SELECT B.出席番号 FROM テーブルB B)
ORDER BY 出席番号;
BEGIN
FOR r IN カーソル LOOP
INSERT INTO テーブルB
(順番, 名前)
VALUES (WCOUNT,r.名前);
COMMIT;
WCOUNT :=WCOUNT + 1;
END LOOP;
/
END;
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
タイプミスがありました。
一行目のVARですが・・
VAR WCOUNT NUMEBR => VAR WCOUNT NUMBER
SQL*PLUS上なら、特別な作業を必要とせずに、バインド変数は使えるはずです。
No.1
- 回答日時:
投稿されたSQLは、明らかな転記ミスと思しき箇所があるので、
何が転記ミスで、何が本来の問題点なのか区別が付かないのですが・・
declare ~(a)~ begin ~(b)~ end;
/
declare ~(c)~ begin ~(d)~ end;
/
という一連のスクリプトの場合、(a)で定義した変数は、(b)で有効ですが、
別の無名ブロックである(d)では、利用できません。改めて(c)で定義する必要があります。
無名ブロック間で変数を共有する場合、declareで定義するPL/SQL変数ではなく、
バインド変数を使います。(SQL*PLUSのVARコマンド参照)
--ここから
VAR WCOUNT NUMEBR
DECLARE
CURSOR カーソル IS
SELECT 出席番号,名前,成績 FROM テーブルA ORDER BY 出席番号;
BEGIN
FOR r IN カーソル LOOP
INSERT INTO テーブルB (r.順番, r.名前,r.出席番号) VALUES (:WCOUNT,r.名前);
COMMIT;
:WCOUNT := :WCOUNT + 1;
END LOOP;
END;
/
DECLARE
CURSOR カーソル IS
SELECT 出席番号,名前,成績 FROM テーブルA A
WHERE A.出席番号 NOT IN (SELECT B.出席番号 FROM テーブルB B)
ORDER BY 出席番号;
BEGIN
FOR r IN カーソル LOOP
INSERT INTO テーブルB (順番, 名前) VALUES (:WCOUNT,r.名前);
COMMIT;
:WCOUNT := :WCOUNT + 1;
END LOOP;
END;
/
--ここまで
カーソルループの中で、コミットしてるのは、気になったのですが、そのままにしています。
また、スクリプトファイル中での空行は気をつけた方がいいですよ。
この回答への補足
返信ありがとうございます
早速訂正し、SQLplus上にて実行したところ
SP2-0552: バインド変数”WCOUNT”が宣言されていません。
のエラーがでてしまいました
バインド変数を利用するのに何か設定がいるのでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
PL/SQLでPLS-00201のエラー
Oracle
-
Statement ignored というエラー
Oracle
-
バインド変数について
Oracle
-
-
4
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
5
オラクル(PL/SQL)のエラー
その他(データベース)
-
6
TO_CHARでのゼロ非表示について
Oracle
-
7
PL/SQL ORA-06502エラーに関して(動的SQL)
その他(データベース)
-
8
「ORA-00907: 右カッコがありません」について
Oracle
-
9
PL/SQLでログを確認したい。
Oracle
-
10
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
11
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリー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初心者】最大値と次に...
おすすめ情報