一些有用的SQL Server语句和存储过程
1
-- ======================================================
2
3
--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
4
5
--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
6
7
-- ======================================================
8
9
Select
10
11
(Case When A.Colorder=1 Then D.Name Else '' End)表名,
12
13
A.Colorder 字段序号,
14
15
A.Name 字段名,
16
17
(Case When Columnproperty( A.Id,A.Name,'Isidentity')=1 Then '√'Else '' End) 标识,
18
19
(Case When (Select Count(*)
20
21
From Sysobjects
22
23
Where (Name In
24
25
(Select Name
26
27
From Sysindexes
28
29
Where (Id = A.Id) And (Indid In
30
31
(Select Indid
32
33
From Sysindexkeys
34
35
Where (Id = A.Id) And (Colid In
36
37
(Select Colid
38
39
From Syscolumns
40
41
Where (Id = A.Id) And (Name = A.Name))))))) And
42
43
(Xtype = 'Pk'))>0 Then '√' Else '' End) 主键,
44
45
B.Name 类型,
46
47
A.Length 占用字节数,
48
49
Columnproperty(A.Id,A.Name,'Precision') As 长度,
50
51
Isnull(Columnproperty(A.Id,A.Name,'Scale'),0) As 小数位数,
52
53
(Case When A.Isnullable=1 Then '√'Else '' End) 允许空,
54
55
Isnull(E.Text,'') 默认值,
56
57
Isnull(G.[Value],'') As 字段说明
58
59
From Syscolumns A Left Join Systypes B
60
61
On A.Xtype=B.Xusertype
62
63
Inner Join Sysobjects D
64
65
On A.Id=D.Id And D.Xtype='U' And D.Name<>'Dtproperties'
66
67
Left Join Syscomments E
68
69
On A.Cdefault=E.Id
70
71
Left Join Sysproperties G
72
73
On A.Id=G.Id And A.Colid = G.Smallid
74
75
Order By A.Id,A.Colorder
76
77
列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息
78
79
并导出到Excel 中
80
81
-- ======================================================
82
83
-- Export all user tables definition and one sample value
84
85
-- jan-13-2003,Dr.Zhang
86
87
-- ======================================================
88
89
在查询分析器里运行:
90
91
SET ANSI_NULLS OFF
92
93
GO
94
95
SET NOCOUNT ON
96
97
GO
98
99
100
101
SET LANGUAGE 'Simplified Chinese'
102
103
go
104
105
DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)
106
107
108
109
SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t
110
111
FROM syscolumns a, systypes b,sysobjects d
112
113
WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U'
114
115
116
117
DECLARE read_cursor CURSOR
118
119
FOR SELECT TableName,FieldName FROM #t
120
121
122
123
SELECT TOP 1 '_TableName ' TableName,
124
125
'FieldName ' FieldName,'TypeName ' TypeName,
126
127
'Length' Length,'IS_NULL' IS_NULL,
128
129
'MaxLenUsed' AS MaxLenUsed,'Sample Value ' Sample,
130
131
'Comment ' Comment INTO #tc FROM #t
132
133
134
135
OPEN read_cursor
136
137
138
139
FETCH NEXT FROM read_cursor INTO @tbl,@fld
140
141
WHILE (@@fetch_status <> -1) --- failes
142
143
BEGIN
144
145
IF (@@fetch_status <> -2) -- Missing
146
147
BEGIN
148
149
SET @sql=N'SET @maxlen=(SELECT max(len(cast('+@fld+' as nvarchar))) FROM '+@tbl+')'
150
151
--PRINT @sql
152
153
EXEC SP_EXECUTESQL @sql,N'@maxlen int OUTPUT',@maxlen OUTPUT
154
155
--print @maxlen
156
157
SET @sql=N'SET @sample=(SELECT TOP 1 cast('+@fld+' as nvarchar) FROM '+@tbl+' WHERE len(cast('+@fld+' as nvarchar))='+convert(nvarchar(5),@maxlen)+')'
158
159
EXEC SP_EXECUTESQL @sql,N'@sample varchar(30) OUTPUT',@sample OUTPUT
160
161
--for quickly
162
163
--SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+
164
165
--@tbl+' order by 1 desc ))'
166
167
PRINT @sql
168
169
print @sample
170
171
print @tbl
172
173
EXEC SP_EXECUTESQL @sql,N'@sample nvarchar(30) OUTPUT',@sample OUTPUT
174
175
INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,
176
177
convert(nchar(20),ltrim(ISNULL(@sample,' '))) as Sample,' ' Comment FROM #t where TableName=@tbl and FieldName=@fld
178
179
END
180
181
FETCH NEXT FROM read_cursor INTO @tbl,@fld
182
183
END
184
185
186
187
CLOSE read_cursor
188
189
DEALLOCATE read_cursor
190
191
GO
192
193
194
195
SET ANSI_NULLS ON
196
197
GO
198
199
SET NOCOUNT OFF
200
201
GO
202
203
select count(*) from #t
204
205
DROP TABLE #t
206
207
GO
208
209
210
211
select count(*)-1 from #tc
212
213
214
215
select * into ##tx from #tc order by tablename
216
217
DROP TABLE #tc
218
219
220
221
--select * from ##tx
222
223
224
225
declare @db nvarchar(60),@sql nvarchar(3000)
226
227
set @db=db_name()
228
229
--请修改用户名和口令 导出到Excel 中
230
231
set @sql='exec master.dbo.xp_cmdshell ''bcp ..dbo.##tx out c:\'+@db+'_exp.xls -w -C936 -Usa -Psa '''
232
233
print @sql
234
235
exec(@sql)
236
237
GO
238
239
DROP TABLE ##tx
240
241
GO
242
243
244
245
246
247
248
249
-- ======================================================
250
251
--根据表中数据生成insert语句的存储过程
252
253
--建立存储过程,执行 spGenInsertSQL 表名
254
255
--感谢playyuer
256
257
-- ======================================================
258
259
CREATE proc spGenInsertSQL (@tablename varchar(256))
260
261
262
263
as
264
265
begin
266
267
declare @sql varchar(8000)
268
269
declare @sqlValues varchar(8000)
270
271
set @sql =' ('
272
273
set @sqlValues = 'values (''+'
274
275
select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'
276
277
from
278
279
(select case
280
281
when xtype in (48,52,56,59,60,62,104,106,108,122,127)
282
283
then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
284
285
when xtype in (58,61)
286
287
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
288
289
when xtype in (167)
290
291
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
292
293
when xtype in (231)
294
295
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
296
297
when xtype in (175)
298
299
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
300
301
when xtype in (239)
302
303
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
304
305
else '''NULL'''
306
307
end as Cols,name
308
309
from syscolumns
310
311
where id = object_id(@tablename)
312
313
) T
314
315
set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
316
317
--print @sql
318
319
exec (@sql)
320
321
end
322
323
324
325
GO
326
327
328
329
330
331
332
333
-- ======================================================
334
335
--根据表中数据生成insert语句的存储过程
336
337
--建立存储过程,执行 proc_insert 表名
338
339
--感谢Sky_blue
340
341
-- ======================================================
342
343
344
345
CREATE proc proc_insert (@tablename varchar(256))
346
347
as
348
349
begin
350
351
set nocount on
352
353
declare @sqlstr varchar(4000)
354
355
declare @sqlstr1 varchar(4000)
356
357
declare @sqlstr2 varchar(4000)
358
359
select @sqlstr='select ''insert '+@tablename
360
361
select @sqlstr1=''
362
363
select @sqlstr2=' ('
364
365
select @sqlstr1= ' values ( ''+'
366
367
select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case
368
369
-- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
370
371
when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'
372
373
when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
374
375
when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
376
377
when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
378
379
when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
380
381
when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'
382
383
when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
384
385
when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
386
387
when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
388
389
when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
390
391
when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
392
393
when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
394
395
when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'
396
397
when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
398
399
when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'
400
401
-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
402
403
when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
404
405
else '''NULL'''
406
407
end as col,a.colid,a.name
408
409
from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36
410
411
)t order by colid
412
413
414
415
select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename
416
417
-- print @sqlstr
418
419
exec( @sqlstr)
420
421
set nocount off
422
423
end
424
425
GO
-- ======================================================2

3
--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息4

5
--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中6

7
-- ======================================================8

9
Select 10

11
(Case When A.Colorder=1 Then D.Name Else '' End)表名,12

13
A.Colorder 字段序号,14

15
A.Name 字段名,16

17
(Case When Columnproperty( A.Id,A.Name,'Isidentity')=1 Then '√'Else '' End) 标识,18

19
(Case When (Select Count(*)20

21
From Sysobjects22

23
Where (Name In24

25
(Select Name26

27
From Sysindexes28

29
Where (Id = A.Id) And (Indid In30

31
(Select Indid32

33
From Sysindexkeys34

35
Where (Id = A.Id) And (Colid In36

37
(Select Colid38

39
From Syscolumns40

41
Where (Id = A.Id) And (Name = A.Name))))))) And42

43
(Xtype = 'Pk'))>0 Then '√' Else '' End) 主键,44

45
B.Name 类型,46

47
A.Length 占用字节数,48

49
Columnproperty(A.Id,A.Name,'Precision') As 长度,50

51
Isnull(Columnproperty(A.Id,A.Name,'Scale'),0) As 小数位数,52

53
(Case When A.Isnullable=1 Then '√'Else '' End) 允许空,54

55
Isnull(E.Text,'') 默认值,56

57
Isnull(G.[Value],'') As 字段说明 58

59
From Syscolumns A Left Join Systypes B 60

61
On A.Xtype=B.Xusertype62

63
Inner Join Sysobjects D 64

65
On A.Id=D.Id And D.Xtype='U' And D.Name<>'Dtproperties'66

67
Left Join Syscomments E68

69
On A.Cdefault=E.Id70

71
Left Join Sysproperties G72

73
On A.Id=G.Id And A.Colid = G.Smallid 74

75
Order By A.Id,A.Colorder76

77
列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息78

79
并导出到Excel 中80

81
-- ======================================================82

83
-- Export all user tables definition and one sample value84

85
-- jan-13-2003,Dr.Zhang86

87
-- ======================================================88

89
在查询分析器里运行:90

91
SET ANSI_NULLS OFF 92

93
GO94

95
SET NOCOUNT ON96

97
GO98

99
100

101
SET LANGUAGE 'Simplified Chinese'102

103
go104

105
DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)106

107
108

109
SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t110

111
FROM syscolumns a, systypes b,sysobjects d 112

113
WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U' 114

115
116

117
DECLARE read_cursor CURSOR118

119
FOR SELECT TableName,FieldName FROM #t120

121
122

123
SELECT TOP 1 '_TableName ' TableName,124

125
'FieldName ' FieldName,'TypeName ' TypeName,126

127
'Length' Length,'IS_NULL' IS_NULL, 128

129
'MaxLenUsed' AS MaxLenUsed,'Sample Value ' Sample,130

131
'Comment ' Comment INTO #tc FROM #t132

133
134

135
OPEN read_cursor136

137
138

139
FETCH NEXT FROM read_cursor INTO @tbl,@fld140

141
WHILE (@@fetch_status <> -1) --- failes142

143
BEGIN144

145
IF (@@fetch_status <> -2) -- Missing146

147
BEGIN148

149
SET @sql=N'SET @maxlen=(SELECT max(len(cast('+@fld+' as nvarchar))) FROM '+@tbl+')'150

151
--PRINT @sql152

153
EXEC SP_EXECUTESQL @sql,N'@maxlen int OUTPUT',@maxlen OUTPUT154

155
--print @maxlen156

157
SET @sql=N'SET @sample=(SELECT TOP 1 cast('+@fld+' as nvarchar) FROM '+@tbl+' WHERE len(cast('+@fld+' as nvarchar))='+convert(nvarchar(5),@maxlen)+')'158

159
EXEC SP_EXECUTESQL @sql,N'@sample varchar(30) OUTPUT',@sample OUTPUT160

161
--for quickly 162

163
--SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+164

165
--@tbl+' order by 1 desc ))' 166

167
PRINT @sql168

169
print @sample170

171
print @tbl172

173
EXEC SP_EXECUTESQL @sql,N'@sample nvarchar(30) OUTPUT',@sample OUTPUT174

175
INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,176

177
convert(nchar(20),ltrim(ISNULL(@sample,' '))) as Sample,' ' Comment FROM #t where TableName=@tbl and FieldName=@fld178

179
END180

181
FETCH NEXT FROM read_cursor INTO @tbl,@fld182

183
END184

185
186

187
CLOSE read_cursor188

189
DEALLOCATE read_cursor190

191
GO192

193
194

195
SET ANSI_NULLS ON196

197
GO198

199
SET NOCOUNT OFF200

201
GO202

203
select count(*) from #t204

205
DROP TABLE #t206

207
GO208

209
210

211
select count(*)-1 from #tc212

213
214

215
select * into ##tx from #tc order by tablename216

217
DROP TABLE #tc218

219
220

221
--select * from ##tx222

223
224

225
declare @db nvarchar(60),@sql nvarchar(3000)226

227
set @db=db_name()228

229
--请修改用户名和口令 导出到Excel 中230

231
set @sql='exec master.dbo.xp_cmdshell ''bcp ..dbo.##tx out c:\'+@db+'_exp.xls -w -C936 -Usa -Psa '''232

233
print @sql234

235
exec(@sql)236

237
GO238

239
DROP TABLE ##tx240

241
GO242

243
244

245
246

247
248

249
-- ======================================================250

251
--根据表中数据生成insert语句的存储过程252

253
--建立存储过程,执行 spGenInsertSQL 表名254

255
--感谢playyuer256

257
-- ======================================================258

259
CREATE proc spGenInsertSQL (@tablename varchar(256))260

261
262

263
as264

265
begin266

267
declare @sql varchar(8000)268

269
declare @sqlValues varchar(8000)270

271
set @sql =' ('272

273
set @sqlValues = 'values (''+'274

275
select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],' 276

277
from 278

279
(select case 280

281
when xtype in (48,52,56,59,60,62,104,106,108,122,127) 282

283
then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'284

285
when xtype in (58,61)286

287
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'288

289
when xtype in (167)290

291
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'292

293
when xtype in (231)294

295
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'296

297
when xtype in (175)298

299
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'300

301
when xtype in (239)302

303
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'304

305
else '''NULL'''306

307
end as Cols,name308

309
from syscolumns 310

311
where id = object_id(@tablename) 312

313
) T 314

315
set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename316

317
--print @sql318

319
exec (@sql)320

321
end322

323
324

325
GO326

327
328

329
330

331
332

333
-- ======================================================334

335
--根据表中数据生成insert语句的存储过程336

337
--建立存储过程,执行 proc_insert 表名338

339
--感谢Sky_blue340

341
-- ======================================================342

343
344

345
CREATE proc proc_insert (@tablename varchar(256))346

347
as348

349
begin350

351
set nocount on352

353
declare @sqlstr varchar(4000)354

355
declare @sqlstr1 varchar(4000)356

357
declare @sqlstr2 varchar(4000)358

359
select @sqlstr='select ''insert '+@tablename360

361
select @sqlstr1=''362

363
select @sqlstr2=' ('364

365
select @sqlstr1= ' values ( ''+'366

367
select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case 368

369
-- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'370

371
when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'372

373
when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'374

375
when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'376

377
when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'378

379
when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'380

381
when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'382

383
when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'384

385
when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'386

387
when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'388

389
when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'390

391
when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'392

393
when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'394

395
when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'396

397
when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'398

399
when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'400

401
-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'402

403
when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'404

405
else '''NULL'''406

407
end as col,a.colid,a.name408

409
from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36410

411
)t order by colid412

413
414

415
select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename416

417
-- print @sqlstr418

419
exec( @sqlstr)420

421
set nocount off422

423
end424

425
GOposted on 2005-06-18 10:31 ξσ Dicky σξ 阅读(594) 评论(0) 收藏 举报

浙公网安备 33010602011771号