日期:2014-05-19  浏览次数:20805 次

请教一个SQL update写法的问题。
比如mytable中有A   B   C   D   E   F....等等n个列
而具体业务中,有的需要更新AC,有的需要更DEF。
在写具体的UpdateTable函数的时候如何写?
是写一个函数的N个重载版本吗?那么如果有业务1需要更新AC,业务2需要更新BD,而ABCD都是int的话,怎样写?
或者是只写一个UpdateTable(A,B,C,D...)然后在函数中根据情况选择性的拼装?那样的话string等类型容易根据是否为空判断是不是要拼装到具体的Update语句,而数值类型的如何判断?
还是封装一个参数类,根据业务赋值以后传递给UpdateTable函数,在函数中从这个类取得字段名,数据,数据类,来构建SQL语句和SQL语句用的参数?

------解决方案--------------------
建议用拼sql的方法
如果数据是从 界面上 取得更新数据
那么 所有的都是字符串 你先不做类型转换 到数据层在转

------解决方案--------------------
把所有字段抽象成一个类
向UpdateTable函数传递这个类的一个实例
判断后拼装SQL语句或者直接用存储过程
------解决方案--------------------
只写一个UpdateTable(A,B,C,D...)然后在函数中根据情况选择性的拼装

------解决方案--------------------
用SQL语句拼接试试啊
根据需要来拼出需要的SQL语句来
------解决方案--------------------
同意 wt3056(「马儿.快爬!) 建议
alter proc Test
@type nvarchar(20)
,@a int=null
,@b int=null
,@c int=null
,@d int=null
as
begin
if @type= 'a '
select @a
else if @type= 'b '
select @b
end