日期:2014-05-18  浏览次数:20409 次

求教:在SQL中的存储过程中实现如下功能
这样的问题:在SQL中的T-SQL中实现如下功能
传入要修改的字段,对字段进行判断,如果是字段一,我就字段一加一,如果是字段2,我就是字段2加1   .用CASE是搞不掂的啦
哪位兄弟帮忙?多多指教,谢谢。

------解决方案--------------------
动态sql很容易实现.
------解决方案--------------------
eg:

Create ProceDure SP_TEST(@ColName Varchar(100))
As
Begin
EXEC( ' Update TEST Set ' + @ColName + ' = ' + @ColName + ' + 1 ')
End
GO
EXEC SP_TEST 'A '
------解决方案--------------------
如: 参数是@field declare @sql nvarchar(1000) set @sql = 'update t set ' +@field + ' = ' + @field + ' +1 where ... ' exec (@sql);
------解决方案--------------------
--創建測試環境
Create Table TEST(ID Int, A Int, B Int, C Int)
--插入數據
Insert TEST Select 1, 11, 12, 13
GO
--創建存儲過程
Create ProceDure SP_TEST(@ColName Varchar(100))
As
Begin
EXEC( ' Update TEST Set ' + @ColName + ' = ' + @ColName + ' + 1 ')
End
GO
--測試
--第一次執行存儲過程
EXEC SP_TEST 'A '
Select * From TEST

--第二次執行存儲過程
EXEC SP_TEST 'B '
Select * From TEST
GO
--刪除測試環境
Drop Table TEST
Drop ProceDure SP_TEST
--結果
/*
--第一次執行存儲過程結果(A列數據發生變化)
ID A B C
1 12 12 13

--第二次執行存儲過程結果(B列數據發生變化)
ID A B C
1 12 13 13
*/
------解决方案--------------------
没明白你的意思呢^_^
select data1+1, data2+1 from table
------解决方案--------------------
楼主想太复杂了,
用ECEC动态SQL很容易达到要求