0

さて、ストアドプロシージャを呼び出していますが、VB.netコードが受け取るタイプがわかりません。

ストアドプロシージャは次のとおりです。

@IDNo varchar(Max)
AS
select a.IDNo,
        p.EMAIL
from person p 
    left join customer a on p.person_id=a.person_id
where (a.IDNo=@IDNo)

これが私のVBです。

resultSet = thisDataCxt.sp_GetEmail(IDNo).FirstOrDefault()

私の質問は、resultSetはどのタイプにする必要があるかということです。作ってもObjectいいですか?その場合、IDNoプロパティとEMAILプロパティにアクセスするにはどうすればよいですか。

また、これを使用して結果が返されないかどうか(IDNoに一致するものがなかったかどうか)を確認するためにこれを使用していることを覚えておく必要があります。そのため、resultSetがNULLかどうかをテストする必要があります。

4

3 に答える 3

1

Datasetとdatatablesを使用して、その中にsp出力を格納できないのはなぜですか。次に、datatableの行が0を超える場合は、値を反復処理してみてください。

于 2012-08-03T11:47:48.817 に答える
1

FunctionImportこれは、 sp_getEmailの結果をマップしたもの、おそらく。になりComplexTypeます。FirstOrDefaultを使用しているため、それ自体はセットにはなりません。

ちなみに、SPの前にsp_を付けるのは悪い習慣です。http://sqlserverpedia.com/blog/sql-server-bloggers/stored-procedure-performance-using-%E2%80%9Csp_%E2%80%9D-prefix-%E2%80%93-myth-or-事実/

于 2012-08-03T11:31:17.350 に答える
0

このサンプルコードを確認してください。

cmd.CommandText = "your proc name";
                    cmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter param1 = cmd.Parameters.Add("@param1", SqlDbType.VarChar, 255);
                    param1.Direction = ParameterDirection.Input;
                    SqlParameter param2 = cmd.Parameters.Add("@param2", SqlDbType.Int, 8);
                    param2.Direction = ParameterDirection.OutPut;
                    cmd.ExecuteNonQuery();

これで、@param2に出力値があります。

于 2012-08-03T12:23:48.213 に答える