2016-04-28 32 views
0

的功能,我只是想通過表類型作爲參數在SQL Server如何通過多條記錄在SQL Server

方案的功能: 我有客戶銷售表..當我在銷售窗體中輸入必須影響兩個表的條​​目時。所以我決定創建一個函數來傳遞兩個表值作爲一個類型並執行它的過程。但我不能。 在這種情況下,客戶有一條記錄,銷售有一條或多條記錄。現在我需要知道如何聲明函數以及如何在C#.net中執行它。

客戶

cus_id         
cus_name        
cus_totpurchasecost 

銷售

cus_id    
sales_id   
item_id     
item_qty    
item_cost 

客戶(1, 'DDDDD',10000)

sales(1,1,2,2000)   
sales(1,2,6,1000) 

在此先感謝

+0

你有什麼試過?你能告訴我們你試圖執行的功能嗎?你收到錯誤了嗎? – tobypls

+0

您不必定義數據庫函數,您可以通過C#代碼完成這一切,這樣您就可以控制創建記錄並將其插入數據庫。創建一個函數並將其傳遞給一個類型似乎是一個糟糕的主意。 – progrAmmar

+1

[如何將表值參數傳遞給存儲過程從.net代碼]可能重複(http://stackoverflow.com/questions/5595353/how-to-pass-table-value-parameters-to-stored-procedure-從淨代碼) – rinukkusu

回答

0

您在這裏有幾個選項。

您可以創建一個存儲過程,將您的記錄添加到適用的表(不是函數),然後使用ADO.NET來執行它。這是「老派」方法,網上有很多例子。

通常,您將爲每個CRUD操作(創建,讀取,更新,刪除)創建一個存儲過程,然後在您的C#代碼中調用這些Store Procs解析所需參數的方法。

這比在C#代碼中構建SQL代碼「安全」,因爲它避免了SQL注入攻擊(儘管不是完全)的風險。

參見:

  1. How to create a Stored Procedure
  2. ADO.NET Basics

另一種方法是使用ORM(對象關係映射器)或MicroORM框架,以使這項工作更容易一點。這被認爲是「更新」的做事方式。

參見:

  1. Entity Framework (ORM)
  2. PetaPoco (MicroORM)
-1

您可以使用光標在側,通過行操作行工作。

相關問題