SQL Server存储过程的结果类型

时间:2012-08-03 11:23:23

标签: sql-server vb.net entity-framework stored-procedures

好的,所以我正在调用一个存储过程,我不确定我的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()

我的问题是,应该是什么类型的结果?我能把它变成Object吗?如果是这样,我如何访问其IDNo和EMAIL属性。

还需要记住我正在使用它来查看是否没有结果(也就是IDNo没有匹配)所以我需要测试resultSet是否为NULL。

3 个答案:

答案 0 :(得分: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-fact/

答案 1 :(得分:1)

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

答案 2 :(得分: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中。