こんにちは。教えてください。
PL/SQLを使うのが初めで戸惑っています。
まず、PROCEDUREで
===========================
BEGIN
SELECT NAME FROM TABLE1 WHERE NAME='tanaka';
END;
/
===========================
このように書いて実行させようとすると、「コンパイルエラー」
「INTO句はこのSELECT文に入ります」というエラーが出ます。
SQLの文法的には間違ってないと思うのですが、INTO句とはこれいかに??
ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎて
わかりませんでした。
PL/SQLやORACLEのメーリングリストでお勧めがありましたら教えてください。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
コーディング例です。
**************************************************
*非ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB1
.IS
.
. w_NAME1 CHAR(10);
.
.BEGIN
.
. SELECT NAME1 INTO w_NAME1 FROM TABLE1
. WHERE TBL1_KEY = 'tanaka';
.
. UPDATE TABLE2 SET NAME2 = w_NAME1
. WHERE TBL2_KEY = 'tanaka';
.
. COMMIT;
.
.EXCEPTION
. WHEN OTHERS THEN
. ROLLBACK;
.END;
./
**************************************************
*ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB2
.IS
.
. w_TABLE1 TABLE1%ROWTYPE;
.
. CURSOR c_TABLE1 IS
. SELECT NAME1
. FROM TABLE1
. ORDER BY NAME1;
.
.BEGIN
.
. OPEN c_TABLE1;
.
. LOOP
. FETCH
. c_TABLE1
. INTO
. w_TABLE1;
. EXIT WHEN c_TABLE1%NOTFOUND;
.
. UPDATE TABLE2 SET NAME2 = w_TABLE1.w_NAME1
. WHERE TBL2_KEY = w_TABLE1.w_TBL1_KEY;
.
. END LOOP;
.
. CLOSE c_TABLE1;
.
. COMMIT;
.
.EXCEPTION
. WHEN OTHERS THEN
. ROLLBACK;
.END;
./
先頭のピリオドは無視してください。どこかにミスがあったらごめんなさい。
回答ありがとうございます。
ご丁寧にコードでの解説、すごくわかりやすかったです。
実際mori0309さんのコーディングを参考に実行してみたら
値を取得することができました。
今回の業務はこれで事足りるのですが、これからも使うことがあると思うので
ちゃんと理解するよう勉強したいと思います。大変参考になりました。
どうもありがとうございました。
No.3
- 回答日時:
こんにちは、jotarou といいます。
コーディングは、ishmaster さんので良いと思います。
>ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎてわかりませんでした。
これに関しては、”暗黙カーソル”と入れてお調べください。
>SQLServerで使っていたSQLでは通用しないのでしようか・・・。
難しいとは聞いているのですが、全くの初心者でないのでしたら、通用する部分があると思いますけど・・・。
では・・。
回答ありがとうございます。
教えていただいたとおり、暗黙カーソルでたくさんヒットしました。
まず、カーソルとはなんぞや、から勉強しないといけません。
一冊本を買ってじっくり取り組もうと思います。
みなさんに教えていただいたこと大変勉強になりました。
また質問することもあると思いますがよろしくお願い致します。
No.2
- 回答日時:
PL/SQLでSelect文を使うときには、カーソルなり変数(ishmasterさんの言っている領域)に代入する必要があります。
でないと、Select文で引っ張ってきたデータを使うことができません。変数・カーソルへの代入というと構文が少し変なのですが、ishmasterさんの構文でデータベースからデーターを持ってこれると思ってください。
PL/SQLは、Select文は普通のSQLと少し違いますが、INSERT、DELETE、UPDATEはほとんど普通に使えます。ただし、CREATE、DROPなどは原則として使えません。(方法はありますが・・・)
回答ありがとうございます。
私はVBやAccessのように単純なSQLをぽんぽんと並べれば
実行してくれるのかと勘違いしていました。
そうではないんですね。
少し勉強しないとだめみたいです。
みなさんに教えていただいたことを頭にいれてがんばりたいと思います。
ありがとうございました。
No.1
- 回答日時:
SELECT NAME INTO work FROM TABLE1 WHERE NAME='tanaka';
じゃないでしょうかねえ。
INTOで読み込まれる領域を指定するんではないかと。
PL/SQLは知りませんが。
この回答への補足
さっそくの解答ありがとうございます。
領域ですか。
領域とは・・・・・・・????
環境を書き忘れていました。
WinNT4.0(SR6)
Oracle8
ObjectBrowser7.0
です。
OracleもObjectBrowserも使うのが初めてで右も左もわからない状態です。SQLServerで使っていたSQLでは通用しないのでしようか・・・。
回答ありがとうございました。
せっかく教えていただいたので理解力不足ですみませんでした。
みなさんの回答を参考に、しっかり勉強致します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
PL/SQLでログを確認したい。
Oracle
-
カーソル0件の時にエラーを発生させる
Oracle
-
-
4
CASE文のエラーについて
Oracle
-
5
オラクルのUPDATEで複数テーブル
Oracle
-
6
PL/SQLカーソルの2重FORループができません
Oracle
-
7
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
8
INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
その他(データベース)
-
9
SQL*Loader
Oracle
-
10
Statement ignored というエラー
Oracle
-
11
selectの単純繰り返し
Oracle
-
12
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
-
13
PCC-S-02201エラーの対処を教えてください!
Oracle
-
14
ROWNUMでUPDATEをしたいのですが・・・。
Oracle
-
15
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
16
SELECTで1件のみ取得するには?
Oracle
-
17
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
18
ストアドファンクションの実行
Oracle
-
19
ORA-01843: 指定した月が無効です。エラー
Oracle
-
20
PL/SQLをWindowsのBATファイルで実行するには
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Texの枠囲み調節
-
PL/SQLでのSQL文法
-
PL/SQLカーソルの2重FORループ...
-
PL/SQL)Functionの引数(文字列...
-
ORA-00904:無効な識別子の回避...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
ストアドプロシジャからストア...
-
ODBCリンクの際にACCESSでは読...
-
callで順に実行されるプロシー...
-
Statement ignored というエラー
-
VBA プロシージャの名前の取得
-
SQLで部分的にGROUP BYしたいとき
-
エクセルVBAでUserFormを起動し...
-
sqlplusでヘッダーが付かない
-
WHERE句の実行順序
-
SQL*Plusの終了はquit?exit?
-
likeとsubstrの使いわけについて
-
Accessの数値から時間に変換す...
-
キャッシュを使わずにSELECTを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLカーソルの2重FORループ...
-
Texの枠囲み調節
-
PL/SQLでのSQL文法
-
カーソル定義での条件分岐
-
【PL/SQL】CURSOR ・・・ IS SE...
-
ORA-00904:無効な識別子の回避...
-
自動連番でカラムを更新したい
-
【PL/SQL】LOOPした動的SQLにて...
-
PL/SQL カーソルのFROM句にカー...
-
カーソルフェッチにて、最終レ...
-
PL/SQLで
-
mysqlのcase文で複数の条件を指...
-
文字列の置換
-
ROW_NUMBER BY PL/SQL
-
PL/SQLのOPEN cursor_name FOR...
-
Access VBAで行ラベルが定義さ...
-
Accessのマクロでモジュールを...
-
キャッシュを使わずにSELECTを...
-
エクセルVBAでUserFormを起動し...
-
Statement ignored というエラー
おすすめ情報