プロが教える店舗&オフィスのセキュリティ対策術

初めてこちらで質問させていただきます。
どうぞよろしくお願いします。
早速ですが、
現在ストアドファンクション(PL/pgSQL)にて以下のような形になっています。
変数d1,d2,d3に値をセットするにあたり
テーブルt1を3回スキャンしています。
これを1回のスキャンでセットするような
方法はないのでしょうか?

DECLARE
d1 integer;
d2 integer;
d3 varchar(10);

begin
select min(c1) into d1 from t1;
select min(c2) into d2 from t1;
select min(c3) into d3 from t1;
各種処理
return v;
end;

気持ち的には以下のようなSQLを書きたいのですが、
syntax error となります。
(NG例)
select min(c1) into d1,min(c2) into d2,min(c3) into d3 from t1;

何か良い案がありましたら教えてください。
「それは出来ません」と言う回答でもありがたいです。
※あきらめがつくので。。

それではよろしくお願いします。

gooドクター

A 回答 (3件)

select min(c1),min(c2),min(c3) into d1,d2,d3 from t1;


でダメ?
    • good
    • 1
この回答へのお礼

ありがとうございました。
うまくいきました。
nora1962さんの構文を見てすぐ
「なるほど!」と思い
試してみた結果うまくいきました。
本当にありがとうござおました。
最後に返事が遅れてしまい申し訳ありませんでした。

お礼日時:2008/12/18 19:46

select intoまで辿り着いているのだから、簡単に調べられると思うのですが。

。。

select
式1,式2,式3
into 変数1,変数2,変数3
from 表名

のように、式と対応する変数を複数書きます。

なお、PostgreSQLでは、8.0前後くらいで構文に変更(into句の位置)があったと思います。質問にある使い方は、変更後の使い方です。
    • good
    • 1
この回答へのお礼

chukenkenkouさん

ありがとうございました。
おかげさまで解決しました。
確かにご指摘の通りですね。

ただ自分なりには調べて見たのですが、
マニュアル等ではこの方法を読み取れませんでした。
すみませんでした。
ご丁寧な解説感謝します。

お礼日時:2008/12/18 19:48

カーソルを使用することはもう検討されましたか?


http://www.bnote.net/mysql/appendix/cursors.shtml
    • good
    • 0
この回答へのお礼

すばやいアドバイスありがとうございます。
はい。カーソルを使えばできるだろうな。とは感じておりました。
できれば「カーソルを使わない方法」があれば教えてください。
最初の質問でこの事を記載すべきでした。
すみません。

お礼日時:2008/12/16 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング