我要将表传递给SQL函数(到现在为止我已经传递给存储过程,一切都很好)
考虑以下代码段
var dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("ID", typeof(Guid)));
foreach (var o in orders)
{
var r = dataTable.NewRow();
r["ID"] = o;
dataTable.Rows.Add(r);
}
var res = db.Exec(cmd =>
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("INPUT", dataTable));
cmd.CommandText = "SELECT * FROM FUNCTION";
return cmd.ConvertToList<MyObj>();
});
我不知道在将CommandType指定为Text时是否考虑了参数,我尝试过SQLServer并且它可以工作...... 我究竟做错了什么?这是ServiceStack的OrmLite的限制吗? 感谢
答案 0 :(得分:1)
在您的示例中手动填充cmd
时,您使用的是ADO.NET(即OrmLite),因此您需要找到从ADO.NET调用SQL Server函数的正确方法。
您似乎只能pass a datatable to a UDF from SQL Server 2008+并且要求您的TableType参数是READONLY。