在存储过程中:
要求将下列的查询的结果变成一字段保存到该表的某一个字段中
所有字段除(text字段是ntext类型外)都是varchar(100)类型,
如:
select * from aa where 编号='981213' 返回0-1行数据
其中仅知两个字段名: text,编号 ,其中text字段用来保存旧内容的, 其它的字段名未知,将所有字段名和当前值变成两行字串(除text字段外)保存到text字段中
要求将下列的查询的结果变成一字段保存到该表的某一个字段中
所有字段除(text字段是ntext类型外)都是varchar(100)类型,
如:
select * from aa where 编号='981213' 返回0-1行数据
其中仅知两个字段名: text,编号 ,其中text字段用来保存旧内容的, 其它的字段名未知,将所有字段名和当前值变成两行字串(除text字段外)保存到text字段中
原有一条记录sn = '9812'
如果更新该记录的话,就将该记录的原有所有字段的内容(不包括保存的字段'text')保存到该条记录中指定的字段'text'中去,保存的格式为:保存时间:
字段1,字段2,字段3........
数据1,数据2,数据3........保存完成后该记录更新为新值不知说明白了没有?
--創建測試環境
Create Table aa
(編號 varchar(100),
C1 varchar(100),
C2 varchar(100),
C3 varchar(100),
C4 varchar(100),
C5 varchar(100),
[text] Text)
--插入數據
Insert aa Select '981213', 'aaaaaaa', 'bbbbbbbb', 'cccccccc', 'dddddddd', 'eeeeeeeeeee', ''
Union All Select '981215', 'dasdsa', 'dasdsab', '32532cc', 'd656d', '55767', ''
GO
--創建存儲過程
Create ProceDure SP_TEST
As
Begin
Declare @S1 Varchar(8000), @S2 Varchar(8000)
Select @S1 = '', @S2 = ''
Select @S1 = @S1 + ' + '','' + ''' + Name + '''', @S2 = @S2 + ' + '','' + ' + Name
From SysColumns Where ID = OBJECT_ID('aa') And Name != 'text' Order By ColID
Select @S1 = Stuff(@S1, 1, 8, ''), @S2 = Stuff(@S2, 1, 8, '')
EXEC('Update aa Set [text] =' + @S1 + ' + Char(10) + Char(13) + ' + @S2)
End
GO
--測試
EXEC SP_TEST
Select * From aa
GO
--刪除測試環境
Drop Table aa
Drop ProceDure SP_TEST
--結果
/*
編號 C1 C2 C3 C4 C5 text
981213 aaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeeeeee 編號,C1,C2,C3,C4,C5 981213,aaaaaaa,bbbbbbbb,cccccccc,dddddddd,eeeeeeeeeee
981215 dasdsa dasdsab 32532cc d656d 55767 編號,C1,C2,C3,C4,C5 981215,dasdsa,dasdsab,32532cc,d656d,55767
*/