- - PR -
SQLSERVER ストアドプロシージャ 配列概念
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-02-21 14:40
こんにちは。
OracleのPL/SQLでは、is table of index…で自分のTYPEを作って、配列作れます。2次元配列もできます。 SQLSERVERでは、配列を利用しようと思ったら、どう書けばよいでしょうか。 宜しくお願い致します。 _________________ yangjiayi | ||||
|
投稿日時: 2008-02-21 16:15
バージョンの記載が無いと、方法を探したところで徒労に終わる気がしますが。
ストアドプロシージャのパラメータとして配列を渡す http://blogs.wankuma.com/mura/archive/2008/01/07/116304.aspx | ||||
|
投稿日時: 2008-02-21 16:26
バージョン:2005か2008です。 なるほどね、RETURNはTABLE型にするということですね。 LOOP関連の配列の情報はあるでしょうか。 OracleのPL/SQLのFOR…LOOPはVBとかなり似ています。 SQLSERVERではFORはないから、WHILEの中に、配列とかどういうふうに書くでしょうか。 _________________ yangjiayi | ||||
|
投稿日時: 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文で実現できる訳だし、 どうにでもなるもんです。 使えるようになると嬉しいですけれど。 | ||||
|
投稿日時: 2008-02-22 09:19
CTEのほうは気になっていたですが、これは普通のSELECTと同じでしょうか。
要は、先にWITH AS で定義して、その後、定義したCTEテーブルをFROMで呼び出し、こういう書き方と普通の書き方のメリットはなんでしょか。 _________________ yangjiayi | ||||
|
投稿日時: 2008-02-28 23:15
この辺見てもらったほうが分かりやすいかな?
http://msdn.microsoft.com/msdnmag/issues/07/10/DataPoints/default.aspx?loc=jp 「共通テーブル式」とかで検索してみると良いです。 CTEは直後のステートメントでしか使用できないので、インラインビューを見やすく するとか、そういう目的が主なのかなあと思ってます。 再帰じゃない場合のCTEでは。 |
1