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