- PR -

SQLSERVER ストアドプロシージャ 配列概念

1
投稿者投稿内容
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-02-21 14:40
こんにちは。
OracleのPL/SQLでは、is table of index…で自分のTYPEを作って、配列作れます。2次元配列もできます。

SQLSERVERでは、配列を利用しようと思ったら、どう書けばよいでしょうか。

宜しくお願い致します。
_________________
yangjiayi
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2008-02-21 16:15
バージョンの記載が無いと、方法を探したところで徒労に終わる気がしますが。

ストアドプロシージャのパラメータとして配列を渡す
http://blogs.wankuma.com/mura/archive/2008/01/07/116304.aspx
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-02-21 16:26
引用:

上総さんの書き込み (2008-02-21 16:15) より:
バージョンの記載が無いと、方法を探したところで徒労に終わる気がしますが。

ストアドプロシージャのパラメータとして配列を渡す
http://blogs.wankuma.com/mura/archive/2008/01/07/116304.aspx


バージョン:2005か2008です。
なるほどね、RETURNはTABLE型にするということですね。

LOOP関連の配列の情報はあるでしょうか。

OracleのPL/SQLのFOR…LOOPはVBとかなり似ています。

SQLSERVERではFORはないから、WHILEの中に、配列とかどういうふうに書くでしょうか。
_________________
yangjiayi
OakBow
ベテラン
会議室デビュー日: 2007/09/15
投稿数: 51
投稿日時: 2008-02-21 23:38
CLR使えばまた別かなとは思いますが、MSSQLは配列は扱えません。

配列とは扱い方が違いますが、Table変数やカーソル、一時テーブル、時には
XML型を利用して配列の変わりとしてデータを扱ったりします。
場合によっては再帰も使ってたりも。
http://technet.microsoft.com/ja-jp/library/ms186243.aspx

ループを使用したい場合はカーソルを利用します。

http://technet.microsoft.com/ja-jp/library/ms180169.aspx
http://homepage1.nifty.com/kojama/works/rdbms/mssql/prog.html#term03

大きなデータを扱う場合はカーソルはお勧めしない、とMSが言ってたりするので、
私自身はあんまり使いませんけれど。


通常の言語に慣れていると配列がないことに非常に不安を感じたりしますが、
どうしてもって時にはWHILEとカウンタの変数とIF文で実現できる訳だし、
どうにでもなるもんです。
使えるようになると嬉しいですけれど。
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-02-22 09:19
CTEのほうは気になっていたですが、これは普通のSELECTと同じでしょうか。
要は、先にWITH AS で定義して、その後、定義したCTEテーブルをFROMで呼び出し、こういう書き方と普通の書き方のメリットはなんでしょか。
_________________
yangjiayi
OakBow
ベテラン
会議室デビュー日: 2007/09/15
投稿数: 51
投稿日時: 2008-02-28 23:15
この辺見てもらったほうが分かりやすいかな?
http://msdn.microsoft.com/msdnmag/issues/07/10/DataPoints/default.aspx?loc=jp

「共通テーブル式」とかで検索してみると良いです。

CTEは直後のステートメントでしか使用できないので、インラインビューを見やすく
するとか、そういう目的が主なのかなあと思ってます。
再帰じゃない場合のCTEでは。
1

スキルアップ/キャリアアップ(JOB@IT)