C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: 引数と戻り値がいるsql saeverでのプロシージャの作成


(過去ログ 18 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■7145 / inTopicNo.1)  引数と戻り値がいるsql saeverでのプロシージャの作成
  
□投稿者/ 内藤 (1回)-(2007/08/30(Thu) 17:34:59)

分類:[.NET 全般] 

よろしくお願いします。

visualstudio2005, 言語はC#です。
SQL SERVERで引数と戻り値を利用したプロシージャを作り、その
使用法を知りたいのですが、引数と戻り値を利用した書き方が
よく分かりません。
例えばSELECT *〜のような単純なSQL文を利用したプロシージャの
作成は出来ます。

下記のページを参考にしたのですが、解決には至りませんでした。
http://www.microsoft.com/japan/msdn/thisweek/10lines/vs2005/adonet_sp/cs.aspx

検索結果は多いのですが自分の欲するページが見つかりませんでした。
どうかよろしくお願いします。

下記はパラメータのサンプルです。
INのパラメータ:NAME varchar(20)
OUTのパラメータ:PHONE varchar(10)、
ADDRESS varchar(50)

引用返信 編集キー/
■7146 / inTopicNo.2)  Re[1]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ mあ (47回)-(2007/08/30(Thu) 17:54:36)
No7145 (内藤 さん) に返信
> visualstudio2005, 言語はC#です。
> SQL SERVERで引数と戻り値を利用したプロシージャを作り、その
> 使用法を知りたいのですが、引数と戻り値を利用した書き方が
> よく分かりません。

http://support.microsoft.com/kb/306574/ja

VB ですけど、参考になりませんか?

引用返信 編集キー/
■7150 / inTopicNo.3)  Re[2]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ 内藤 (3回)-(2007/08/30(Thu) 19:18:16)
拝見させていただきました。やはり私自身が力不足のため、あまりよく分かりませんでした。
プロシージャの仕様がよく分かっていないので、どうやらコードにSQL文がなくても
INパラメータとOUTパラメータが設定されていて、INパラメータを渡してやれば
OUTパラメータが返ってくるらしいのですが、それについても書き方がよく分かりません。
解決していないですが、もう少し書籍などでも調べてみます。

No7146 (mあ さん) に返信
> ■No7145 (内藤 さん) に返信
>>visualstudio2005, 言語はC#です。
>>SQL SERVERで引数と戻り値を利用したプロシージャを作り、その
>>使用法を知りたいのですが、引数と戻り値を利用した書き方が
>>よく分かりません。
>
> http://support.microsoft.com/kb/306574/ja
>
> VB ですけど、参考になりませんか?
>
引用返信 編集キー/
■7164 / inTopicNo.4)  Re[3]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ 内藤 (4回)-(2007/08/31(Fri) 11:22:25)
何度も書き込み申し訳ありません。

まだ、解決していなかったのと、どうやら今までの書き込みでは情報が不足していると
思ったため、現在の状況を書こうと思います。

ストアドプロシージャ
ALTER PROCEDURE USP_IC_WorkerCheck_Dataselect
	
	@Work_CD        varchar(10),
	@Pass_CD        Varchar(20),
	
	@Work_PHONE     Varchar(10) OUTPUT,
	@Work_AGE       Varchar(10) OUTPUT,
	@Work_NM        Varchar(20) OUTPUT
	
AS
	/* SET NOCOUNT ON */ 
	
	select @Work_PHONE = 000000000
	select @Work_AGE   = 50
	select @Work_NM    = あああああああ
	

ストアドプロシージャを読みこむC#のコード

 const String str_WorkerCheck     = "USP_IC_WorkerCheck_Dataselect"; //作業者名称取得用プロシージャ

//IN用パラメータ
String workCd = "1111";
String passCd = "2222";
//OUT用パラメータ
String workPhone = "";
String workAge   = "";
String workNm    = "";

 System.Data.SqlClient.SqlDataAdapter dAdp;
        System.Data.SqlClient.SqlConnection scn = new System.Data.SqlClient.SqlConnection();
scn.ConnectionString = Sample.Properties.Settings.Default.ConnectionString;
            scn.Open();
dAdp = new System.Data.SqlClient.SqlDataAdapter(str_WorkerCheck, scn);
       
このような状態で、引数としてINのパラメータの指定と、返ってくるOUTの
パラメータの受け取りの書き方がよく分からない状況です。


引用返信 編集キー/
■7169 / inTopicNo.5)  Re[4]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ J.J. (2回)-(2007/08/31(Fri) 14:04:54)
こちらが参考になるかと。

http://blogs.wankuma.com/naka/archive/2005/10/22/18773.aspx

SqlParameterクラスを使えば出来る気がする。(未検証)

引用返信 編集キー/
■7178 / inTopicNo.6)  Re[5]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ 内藤 (5回)-(2007/08/31(Fri) 15:23:23)
No7169 (J.J. さん) に返信
> こちらが参考になるかと。
>
> http://blogs.wankuma.com/naka/archive/2005/10/22/18773.aspx
>
> SqlParameterクラスを使えば出来る気がする。(未検証)
>

参考にさせて頂きました。INのパラメータは確認できたのですが、
OUTのパラメータはnullになっています。プロシージャ内のコードミスだとは
思うのですが・・・

ALTER PROCEDURE USP_IC_F_WorkCheck_Dataselect

@IP Varchar(20),
@Work_CD varchar(10),
@Pass_CD Varchar(20),

@RET int OUTPUT,
@Container_CD Varchar(20) OUTPUT,
@Work_NM Varchar(50) OUTPUT

AS
/* SET NOCOUNT ON */

set @RET = '0'
set @Container_CD = '123456789'
set @Work_NM = 'ああああああ'
return

SqlConnection conn = new SqlConnection(this.scn.ConnectionString);
SqlCommand cmd = new SqlCommand(str_WorkerCheck, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@IP", SqlDbType.VarChar);
cmd.Parameters["@IP"].Value = "111";
cmd.Parameters.Add("@Work_CD", SqlDbType.VarChar);
cmd.Parameters["@Work_CD"].Value = str_SagyoushaId;
cmd.Parameters.Add("@Pass_CD", SqlDbType.VarChar);
cmd.Parameters["@Pass_CD"].Value = str_SagyoushaPass;
cmd.Parameters.Add("@RET", SqlDbType.Int);
cmd.Parameters["@RET"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("@Container_CD", SqlDbType.VarChar);
cmd.Parameters["@Container_CD"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("@Work_NM", SqlDbType.VarChar);
cmd.Parameters["@Work_NM"].Direction = ParameterDirection.ReturnValue;
conn.Open();・・・

cmd.Parameters.Valueの3〜5がnull
引用返信 編集キー/
■7179 / inTopicNo.7)  Re[6]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ Mr.T (83回)-(2007/08/31(Fri) 15:46:24)
Mr.Tです、こんにちは。

>cmd.Parameters["@Container_CD"].Direction = ParameterDirection.ReturnValue;

例えば、この行ですが、ReturnValueではなく、ParameterDirection.output;
ではないかと。
ReturnValueの場合は、ストアドそのものの返り値(なんか言い方が変ですが)
になるはず...

引用返信 編集キー/
■7180 / inTopicNo.8)  Re[7]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ Mr.T (84回)-(2007/08/31(Fri) 15:47:42)
Mr.Tです、こんにちは。

あう、outputじゃなくて、Outputね。

引用返信 編集キー/
■7185 / inTopicNo.9)  Re[8]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ J.J. (3回)-(2007/08/31(Fri) 16:06:56)
2007/08/31(Fri) 16:07:43 編集(投稿者)

すいません、混乱させてしまいましたね。
ParameterDirection.ReturnValueはストアドプロシジャのReturnでの値が返ってくるみたいです。

SqlParameterクラスを調べればできるんじゃない?って意味で書いてしまいました。(ーー;

Mr.Tさんご指摘通り、ParameterDirecrtion.Outputで取得できます。

こちらもご参考に。
http://support.microsoft.com/kb/310070/ja
引用返信 編集キー/
■7207 / inTopicNo.10)  Re[9]: 引数と戻り値がいるsql saeverでのプロシージャの作成
□投稿者/ 内藤 (6回)-(2007/08/31(Fri) 18:47:38)
解決できました。ありがとうございます。


No7185 (J.J. さん) に返信
> 2007/08/31(Fri) 16:07:43 編集(投稿者)
>
> すいません、混乱させてしまいましたね。
> ParameterDirection.ReturnValueはストアドプロシジャのReturnでの値が返ってくるみたいです。
>
> SqlParameterクラスを調べればできるんじゃない?って意味で書いてしまいました。(ーー;
>
> Mr.Tさんご指摘通り、ParameterDirecrtion.Outputで取得できます。
>
> こちらもご参考に。
> http://support.microsoft.com/kb/310070/ja
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -