2016-12-27 2 views
1

にSQL関数に(今まで私は、ストアドプロシージャに渡されましたし、すべてが大丈夫だった)私は、SQL関数にテーブルを渡すましOrmlite

をユーザー定義テーブル型を渡すと、次のスニペット

を考えてみましょう
 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をテキストとして指定したときにパラメータが考慮されていないとわかりません。SQLServerを試してみました... 何が間違っていますか?これはServiceStackのOrmLiteの制限ですか? ありがとう

答えて

1

cmdを手動で入力するときは、ADO.NET(OrmLiteではなく)を使用しているため、ADO.NETからSQL Server関数を呼び出す正しい方法を見つける必要があります。

pass a datatable to a UDF from SQL Server 2008+しかありませんし、TableTypeパラメータがREADONLYである必要があります。

関連する問題