0
我读了关于SQL Server的函数Cast and Convert,但我有一点点不同的要求。我想声明所有的存储过程参数为varchar
以消除C#中所需的大部分转换代码,同时使用AddWithValue
方法添加参数。存储过程中参数的条件数据类型转换
我想尽可能多的代码放在数据库本身尽可能减少前端代码。我的存储过程包含INSERT
和UPDATE
查询。我想在查询本身或其他更好的方式中转换参数的数据类型。 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
功能。我还能在哪里转换数据类型以及如何检查空值?
我不认为这种方法是一个非常好的主意。仅仅因为你想避免*不必要的*在C#中输入你的调用,你基本上把所有的东西都变成了'varchar',然后'CAST'回来......对我来说,这似乎很愚蠢。如果某项数据是数值型的 - 将其表示为数字一路!不要投它两次 - 首先从C#代码中的数字到字符串,然后在存储过程中从字符串返回数字。铸造**总是花费时间,并且在例如日期的情况下,格式问题也可能出现! **不要这样做!! ** –
还有哪些地方?您可以使用触发器进行插入和更新,以便在其中进行所有转换。而你的查询将保持简单和透明。 – mishau
我认为在存储过程中使用CAST语句会比在C#代码中首先转换它们并传递正确类型的问题要困难得多。 – PaulStock