質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

2回答

832閲覧

SQL ServerストアドプロシージャーでSELECTの結果を使いたい

Chandler_Bing

総合スコア673

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2019/08/26 07:24

表題の通りなのですが、
表形式で結果を返すSQL文があるとします。↓

sql

1SELECT 2 NAME, 3 SEX, 4 HIGHT, 5 AGE 6FROM STUDENTS

このレコード結果を1行ずつループしたいです。

ここではAGEが20歳以上の人のみを別テーブル(TEMP_STUDENTS)に格納したいです。

ストアドプロシージャーでループを使用し、実現したいです。
どのように書けばよいでしょうか。

参考にした内容

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

リンク先の内容を言引用すると

SQL

1CREATE PROCEDURE pro1 2AS 3DECLARE @no int 4DECLARE @yomi nvarchar(50) 5--「e」のつく名前の人だけに絞り込み、番号と読みだけ表示 6DECLARE myCursor CURSOR FOR SELECT 番号, 読み FROM テーブルA WHERE 名前 LIKE '%e%' 7OPEN myCursor 8--一行取り出して、変数に挿入 9FETCH NEXT FROM myCursor INTO @no, @yomi 10WHILE @@FETCH_STATUS = 0 11  BEGIN 12     --表示する 13    PRINT CAST(@no as nvarchar) + '番:' + @yomi 14     --カーソルを次へ移動 15    FETCH NEXT FROM myCursor INTO @no, @yomi 16  END 17CLOSE myCursor 18DEALLOCATE myCursor

上記のDECLARE myCursor CURSORselect 部分の置き換えと、--表示する部分をinsert
に変更すれば良さそうです。

ただ、ループとか使用せずにinsert into selectで纏めてもできますよ?

投稿2019/08/26 07:42

編集2019/08/26 08:04
sazi

総合スコア25206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

質問に使っているテーブルのCREATE TABLEは提示しましょう。

質問のURLを参考にすればコードを書けるのでは?
T-SQL カーソルの使い方とサンプル の方がちょっとわかり易いかも?実際にコードを書いてエラーが出たら、エラーメッセージとコードを質問に追記しては?

投稿2019/08/26 08:29

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問