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

它将是您将FunctionImportsp_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 回答
1

为什么不能使用数据集和数据表并将 sp 输出存储在其中。如果数据表的行数超过 0,则尝试通过它迭​​代值。

于 2012-08-03T11:47:48.817 回答
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 回答