
No.2ベストアンサー
- 回答日時:
お返事が遅くなって申し訳ございませんでした。
ちょっと仕事でバタバタしてたもので・・・。
で、回答なのですが・・・Update文ならわかるのですが、SELECT文はわかりません(>_<)
ごめんなさい~。
とりあえず、Update文の場合です。(Ora8.1.7にて確認。)
--------------------------------------------------
DECLARE
wCount NUMBER(3);
wLoop NUMBER(3);
CURSOR CSR1 IS
SELECT Count(*) As 件数
FROM テーブル名1;
BEGIN
OPEN CSR1;
FETCH CSR1 INTO wCount;
CLOSE CSR1;
FOR wLoop IN 1..wCount LOOP
UPDATE テーブル名2 SET フィールド名=値;
END LOOP;
COMMIT;
END;
/
--------------------------------------------------
単純にUpdate文のところをSelectにしてみると、エラーになっちゃうんですよね・・・。
うーん・・・。
この回答への補足
もしかしたら、"DECLARE~bigin~end"、この文を打つ権限が無いかもしれないです~。
(今、上の人に確認してもらってます)
文だけ読むと、
内容的には、こんな感じの事がしたい!って感じです。
No.3
- 回答日時:
たびたびすみません。
ちょっと思いつきました。
-------------------------------------------------------------------
set echo off
set sqlprompt "--[SPOOLING...]> "
set heading off
set feed off
set timing off
set pages 0
spool temp.sql
SELECT
'SELECT 1a,1b,1c FROM TABLE1 WHERE 1a ='||count(TblB.TABLEのキー)||';'
||chr(10)||
'SELECT 2a,2b,2c FROM TABLE2 WHERE 2a='||count(TblB.TABLEのキー)||';'
FROM TABLE TblA, TABLE TblB
WHERE TblA.TABLEのキー>=TblB.TABLEのキー
GROUP BY TblA.TABLEのキー;
spool off
set heading on
set feed on
set timing on
set pages 1000
SET SQLPROMPT "SQL> "
set echo on
@temp
-------------------------------------------------------------------
spoolファイルを使ってみました。
一度、「temp.sql」というファイルにSQL文を書き出して、「@temp」でそのSQL文を実行しています。
SQL文を見て見たければ、「temp.sql」を自分でわかりやすいファイル名に変更して
spool c:\test.sql
(省略)
@c:\test.sql
とやってみてください。
連番を取得するのために、SQL文が複雑になってます。
単純に
SELECT
'SELECT 1a,1b,1c FROM TABLE1 WHERE 1a ='||rownum||';'
||chr(10)||
'SELECT 2a,2b,2c FROM TABLE2 WHERE 2a='||rownum||';'
FROM TABLE;
でもOKなような気もしますが・・・rownumがどんな場合でもきちんと1から連番になってくれる
のかはっきりしなかったので、今回は見送りました。
不明な点がありましたら書きこんでください。
(またお返事が遅くなるかもしれませんが・・・。)
No.1
- 回答日時:
補足をお願いします。
Oracleのバージョンはなんですか?
プログラムはどこに書いて、実行するのには何のツールを使いますか?
(SQLPlus?ストアドプロシージャ?トリガー?VB?Access?)
具体的に決まっていないのであれば、どういう状況で、どうしてその
処理を実行したいのか、また何度も繰り返し行うのか・・・等の詳細を
教えてください。
> ループに入れ込みたいSQLは以下のような感じです。
> 1.select 1a,1b from TABLE1 where 条件;
> 2.select 2a,2b from TABLE2 where 条件;
ということは、データの件数分SELECT文を発行する = 条件にあう
データを表示するだけ ですか??更新等ではなく?
また、この意味は、1件目で「select 1a,1b from・・・」、2件目では
「select 2a,2b from・・・」、3件目「select 3a,3b from・・・」
ということでしょうか?
この回答への補足
補足します。
oracle10gで、SqlPlusを使っています。
やりたいことはselect文発行のみです。(それ以上の権限が無いもので...)
カウントされたデータの数が9であれば、
1.と2.の両方とも9回ループしたいという意味です。
言葉不足のヤヤコシイ表現になっていまい、すみません。_(._.)_
また説明不足な点がありましたら、補足させていただきます。
よろしくおねがいします。
やりたい事のイメージとして、
select count(*) from TABLE;
COUNT(*)
----------
5
↓
このカウントされた5を元に、
1から5までをループを回す
select 1a,1b,1c from TABLE1 where 1a = 1~5;
select 2a,2b,2c from TABLE2 where 2a = 1~5;
しかし、
上のselect文を1~5までループして後に、
下のselect文がスタートするのではなく。(図1)
(図1)
1a | 1b | 1c ←上のセレクト文
---------------
1
1a | 1b | 1c
---------------
2
・
・
・
2a | 2b | 2c ←下のセレクト文
---------------
1
2a | 2b | 2c
---------------
2
・
・
・
上のselect文の1が発行されたら、下も1を発行し、
つづいて2,3,…という風に交互に表示したいのです。(図2)
(図2)
1a | 1b | 1c ←上のセレクト文
---------------
1
2a | 2b | 2c ←下のセレクト文
---------------
1
1a | 1b | 1c ←上
---------------
2
2a | 2b | 2c ←下
---------------
2
・
・
・
webなどを探しても、同じ例が見つけられなかったので、
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるカラムのMAX値+1をINSERTし...
-
SQLPLUSにて演算子を使う方法と...
-
OracleのSQL*PLUSで、デー...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Excelで、改行がある場合の条件...
-
抽出したデータを修正して元の...
-
決定性有限オートマトン
-
SELECTの結果で同一行を複数回...
-
ADO VBA 実行時エラー3021
-
Accessで別テーブルの値をフォ...
-
実績累計の求め方と意味を教え...
-
DATE型にNULLをセットするには?
-
ワードの差込印刷で教えて下さ...
-
select句副問い合わせ 値の個...
-
ACCESSで大量の更新を行うと「...
-
Date型にNULLをセットしたい V...
-
DataGridViewの、選択されてい...
-
サブフォームに新規レコードを...
-
レコードが存在しなかった場合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるカラムのMAX値+1をINSERTし...
-
レコードが選択されないときの...
-
複数行を1行にするSQL
-
Oracle 9iで英字を含まないレコ...
-
distinct句を使わずレコード総...
-
副照会を簡単に使いまわせますか?
-
SQLPLUSにて演算子を使う方法と...
-
Oracle8iでSQL文の引数について
-
同一データの抽出の方法について
-
通番を振りたい
-
ストアドのselect文で別テーブ...
-
ループの仕方
-
教えて下さい。m(__)m
-
SQL:外部結合について
-
OracleSqlで『RORNUM...
-
複数条件に当てはまる行の抽出...
-
SELECT文でINを使わずに検索したい
-
テーブル結合について、下記SQL...
-
PL/SQLの基礎的な質問ですが・・
-
GROUP BYを行った後に結合した...
おすすめ情報