如何使用ADO.Net將表值參數傳遞給存儲過程?使用ADO.Net傳遞表值參數
37
A
回答
57
在SQL Server中創建類型:
CREATE TYPE [dbo].[MyDataType] As Table ( ID INT, Name NVARCHAR(50) )
創建過程:
CREATE PROCEDURE [dbo].[MyProcedure] ( @myData As [dbo].[MyDataType] Readonly ) AS BEGIN SELECT * FROM @myData END
在C#創建數據表:
DataTable myDataTable = new DataTable("MyDataType"); myDataTable.Columns.Add("Name", typeof(string)); myDataTable.Columns.Add("Id", typeof(Int32)); myDataTable.Rows.Add("XYZ", 1); myDataTable.Rows.Add("ABC", 2);
創建SQL參數:
SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@myData"; parameter.SqlDbType = System.Data.SqlDbType.Structured; parameter.Value = myDataTable; command.Parameters.Add(parameter);
0
此問題是How to pass table value parameters to stored procedure from .net code的副本。請參閱該問題,以舉例說明如何使用DataTable
或IEnumerable<SqlDataRecord>
。
9
我嘗試這樣做,接收到異常:
表類型參數「@MyDataType」必須具有有效的類型名稱。
我不得不設置的SqlParameter的 「類型名」 屬性:
parameter.TypeName = "MyDataType";
+0
是的。你是對的,必須設置「TypeName」。 –
+0
添加數據庫模式作爲表名的一部分爲我做了:DataTable myDataTable = new DataTable(「dbo.MyDataType」); – noontz
-3
你可以Exec的
using(SqlConnection con = new SqlConnection("Server=.;database=employee;user=sa;password=12345"))
{
SqlCommand cmd = new SqlCommand(" exec ('drop table '[email protected])" , con);
cmd.Parameters.AddWithValue("@tab" ,"Employee");
con.Open();
cmd.ExecuteNonQuery();
}
相關問題
- 1. 在ado.net源碼中傳遞參數
- 2. 升C:參數來傳遞ado.net記錄
- 3. ADO.NET的DataService:傳遞參數[WebInvoke]方法
- 4. 使用ISqlQuery傳遞DateTime2參數值
- 5. 值參數不被傳遞使用jQuery?
- 6. 傳遞參數值使用RedirectToaction MVC3
- 7. 使用select語句在表值函數中傳遞參數
- 8. 如何傳遞表值參數
- 9. 傳遞列表值作爲參數
- 10. 傳遞參數使用link_to
- 11. 使用HttpURLConnection傳遞參數
- 12. 使用Tabhost傳遞參數
- 13. 使用drupal_get_form傳遞參數()
- 14. 使用NameValuePair傳遞參數
- 15. IntelliTrace和ADO.NET參數值
- 16. 傳遞多個值參數
- 17. C#傳遞參數值
- 18. Oracle XMLQuery傳遞參數值
- 19. 傳遞參數值在Excel
- 20. C#出參數值傳遞
- 21. AS3傳遞參數值
- 22. SSRS多值參數傳遞
- 23. 傳遞右值參數的非const左值引用參數
- 24. Python:列表參數傳遞
- 25. SSRS傳遞報表參數
- 26. 傳遞表參數與Simple.Data
- 27. XQuery - 傳遞參數列表
- 28. django表單傳遞參數
- 29. 遞歸:使用參數中傳遞的值
- 30. 將值傳遞給const引用參數?
這只是在SQL Server是適用2008年 –
同樣是工作的罰款前綴與SQL Server 2012一樣。 –
我的意思是隻有Sql server 2008及以上版本,所以它也可以在2012工作。 –