1
2
/* Usage:
3
exec DataAsInsCommand 'sys$serialcodetype'
4
*/
5
6
IF OBJECT_ID('DataAsInsCommand') IS NOT NULL DROP PROC DataAsInsCommand
7
GO
8
SET QUOTED_IDENTIFIER OFF
9
GO
10
CREATE PROC DataAsInsCommand (
11
@TableList varchar (200))
12
AS
13
SET NOCOUNT ON
14
DECLARE @position int, @exec_str varchar (2000), @TableName varchar (30)
15
DECLARE @name varchar(128), @xtype int, @status tinyint, @IsIdentity tinyint
16
SELECT @TableList = @TableList + ','
17
SELECT @IsIdentity = 0
18
SELECT @position = PATINDEX('%,%', @TableList)
19
WHILE (@position <> 0)
20
BEGIN
21
SELECT @TableName = SUBSTRING(@TableList, 1, @position - 1)
22
SELECT @TableList = STUFF(@TableList, 1, PATINDEX('%,%', @TableList), '')
23
SELECT @position = PATINDEX('%,%', @TableList)
24
25
SELECT @exec_str = 'DECLARE fetch_cursor CURSOR FOR '
26
+ 'SELECT name, xtype, status FROM syscolumns WHERE id = object_id("'
27
+ @TableName + '")'
28
EXEC (@exec_str)
29
30
OPEN fetch_cursor
31
FETCH fetch_cursor INTO @name, @xtype, @status
32
IF (@status & 0x80) <> 0
33
BEGIN
34
SELECT @IsIdentity = 1
35
SELECT 'SET IDENTITY_INSERT ' + @TableName + ' ON'
36
SELECT 'GO'
37
END
38
SELECT @exec_str = "SELECT 'INSERT INTO " + @TableName + " VALUES (' + "
39
40
--text or ntext
41
IF (@xtype = 35) OR (@xtype = 99)
42
SELECT @exec_str = @exec_str + '''"None yet"'''
43
ELSE
44
45
--image
46
IF (@xtype = 34)
47
SELECT @exec_str = @exec_str + '"' + '0xFFFFFFFF' + '"'
48
ELSE
49
50
--smalldatetime or datetime
51
IF (@xtype = 58) OR (@xtype = 61)
52
SELECT @exec_str = @exec_str + ' + ''"'' + ' + ' + CONVERT(varchar,' + @name + ',101)' + ' + ''"'''
53
ELSE
54
55
--varchar or char or nvarchar or nchar
56
IF (@xtype = 167) OR (@xtype = 175) OR (@xtype = 231) OR (@xtype = 239)
57
SELECT @exec_str = @exec_str + '''"'' + ' + @name + ' + ''"'''
58
ELSE
59
60
--uniqueidentifier
61
IF (@xtype = 36)
62
SELECT @exec_str = @exec_str + ' + ''"'' + ' + ' + CONVERT(varchar(255),' + @name + ')' + ' + ''"'''
63
ELSE
64
65
--binary or varbinary
66
IF (@xtype = 173) OR (@xtype = 165)
67
SELECT @exec_str = @exec_str + '"' + '0x0' + '"'
68
ELSE
69
70
SELECT @exec_str = @exec_str + 'ISNULL(CONVERT(varchar,' + @name + '), "null")'
71
72
WHILE @@FETCH_STATUS <> -1
73
BEGIN
74
FETCH fetch_cursor INTO @name, @xtype, @status
75
IF (@@FETCH_STATUS = -1) BREAK
76
IF (@status & 0x80) <> 0
77
BEGIN
78
SELECT @IsIdentity = 1
79
SELECT 'SET IDENTITY_INSERT ' + @TableName + ' ON'
80
SELECT 'GO'
81
END
82
83
--text or ntext
84
IF (@xtype = 35) OR (@xtype = 99)
85
SELECT @exec_str = @exec_str + ' + '',''' + ' + ''"None yet"'''
86
ELSE
87
88
--image
89
IF (@xtype = 34)
90
SELECT @exec_str = @exec_str + ' + "," + ' + '"' + '0xFFFFFFFF' + '"'
91
ELSE
92
93
--smalldatetime or datetime
94
IF (@xtype = 58) OR (@xtype = 61)
95
SELECT @exec_str = @exec_str + ' + ","' + ' + ''"'' + ' + ' + CONVERT(varchar,' + @name + ',101)' + ' + ''"'''
96
ELSE
97
98
--varchar or char or nvarchar or nchar
99
IF (@xtype = 167) OR (@xtype = 175) OR (@xtype = 231) OR (@xtype = 239)
100
SELECT @exec_str = @exec_str + ' + '',''' + ' + ''"'' + ' + @name + ' + ''"'''
101
ELSE
102
103
--uniqueidentifier
104
IF (@xtype = 36)
105
SELECT @exec_str = @exec_str + ' + ","' + ' + ''"'' + ' + ' + CONVERT(varchar(255),' + @name + ')' + ' + ''"'''
106
ELSE
107
108
--binary or varbinary
109
IF (@xtype = 173) OR (@xtype = 165)
110
SELECT @exec_str = @exec_str + ' + "," + ' + '"' + '0x0' + '"'
111
ELSE
112
113
SELECT @exec_str = @exec_str + ' + ","' + ' + ISNULL(CONVERT(varchar,' + @name + '), "null")'
114
END
115
116
CLOSE fetch_cursor
117
DEALLOCATE fetch_cursor
118
119
SELECT @exec_str = @exec_str + '+ ")" FROM ' + @TableName
120
SELECT @exec_str
121
EXEC(@exec_str)
122
SELECT 'GO'
123
124
IF @IsIdentity = 1
125
BEGIN
126
SELECT @IsIdentity = 0
127
SELECT 'SET IDENTITY_INSERT ' + @TableName + ' OFF'
128
SELECT 'GO'
129
END
130
END
131
GO
132

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132
