使用PetaPoco中的参数调用存储过程

时间:2011-08-05 01:15:32

标签: sql petapoco

我希望能够在PetaPoco中调用带有命名参数的存储过程。

为了调用执行搜索/获取的存储过程:

我可以这样做:

return db.Fetch<Customer>("EXEC SP_FindCust",
new SqlParameter("@first_name", fName),
new SqlParameter("@last_name", lName),
new SqlParameter("@dob", dob));

另外,如何调用执行插入的存储过程?

return db.Execute("EXEC InsertCust @CustID = 1, @CustName = AAA")

谢谢, NAC

3 个答案:

答案 0 :(得分:26)

更新

我尝试了以下内容用于获取和插入,并且它运行良好:

var s = PetaPoco.Sql.Builder.Append("EXEC SP_FindCust @@last_name = @0", lname);
s.Append(", @@first_name = @0", fName);
s.Append(", @@last_name = @0", lName);
s.Append(", @@dob = @0", dob);
return db.Query<Cust>(s);

这可以进一步改进以传递SQL参数。

答案 1 :(得分:0)

从v6.0.344-beta开始,PetaPoco现在支持存储过程,而无需使用EXEC。参见https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Stored-procedures

答案 2 :(得分:0)

就我而言,我做了以下

db.EnableAutoSelect = false;

return db.Fetch<Customer>(@"EXEC SP_FindCust 
@@first_name = @first_name, 
@@last_name = @last_name, 
@@dob = @dob", new {
  first_name = fName,
  last_name = lName,
  dob = dob
});

成功了!