2011-09-20 32 views
0

我讀了關於SQL Server的函數Cast and Convert,但我有一點點不同的要求。我想聲明所有的存儲過程參數爲varchar以消除C#中所需的大部分轉換代碼,同時使用AddWithValue方法添加參數。存儲過程中參數的條件數據類型轉換

我想盡可能多的代碼放在數據庫本身儘可能減少前端代碼。我的存儲過程包含INSERTUPDATE查詢。我想在查詢本身或其他更好的方式中轉換參數的數據類型。 CAST函數適用於轉換,但如果我還想在參數沒有值時傳遞NULL,該怎麼辦?

例如:

@Udate varchar(10), 
@Uamount varchar(50) 

INSERT INTO table (Name, Udate, Uamount) 
    VALUES (@Name, Cast(Udate As DateTime), Cast(Uamount As Decimal) 

在查詢中使用CAST的缺點本身是該查詢的可讀性變差與許多CAST功能。我還能在哪裏轉換數據類型以及如何檢查空值?

+5

我不認爲這種方法是一個非常好的主意。僅僅因爲你想避免*不必要的*在C#中輸入你的調用,你基本上把所有的東西都變成了'varchar',然後'CAST'回來......對我來說,這似乎很愚蠢。如果某項數據是數值型的 - 將其表示爲數字一路!不要投它兩次 - 首先從C#代碼中的數字到字符串,然後在存儲過程中從字符串返回數字。鑄造**總是花費時間,並且在例如日期的情況下,格式問題也可能出現! **不要這樣做!! ** –

+0

還有哪些地方?您可以使用觸發器進行插入和更新,以便在其中進行所有轉換。而你的查詢將保持簡單和透明。 – mishau

+3

我認爲在存儲過程中使用CAST語句會比在C#代碼中首先轉換它們並傳遞正確類型的問題要困難得多。 – PaulStock

回答

相關問題