|
85
86 RETURN(UTL_RAW.CAST_TO_VARCHAR2(V_DUMP_ROWID));
87 ELSIF V_COLUMN_TYPE = 'NUMBER' THEN
88
89 V_DUMP_ROWID :=F_ADD_PREFIX_ZERO(V_DUMP_ROWID ',', INSTR(V_DUMP_ROWID, ','));
90
91 RETURN(TO_CHAR(UTL_RAW.CAST_TO_NUMBER(V_DUMP_ROWID)));
92 ELSIF V_COLUMN_TYPE = 'DATE' THEN
93
94 V_DUMP_ROWID := ',' V_DUMP_ROWID ',';
95
96 FOR I IN 1..7 LOOP
97 V_DATE(I) := TO_NUMBER(SUBSTR(V_DUMP_ROWID, INSTR(V_DUMP_ROWID, ',', 1, I) + 1,
98 INSTR(V_DUMP_ROWID, ',', 1, I + 1) - INSTR(V_DUMP_ROWID, ',', 1, I) - 1), 'XXX');
99 END LOOP;
100
101 V_DATE(1) := V_DATE(1) - 100;
102 V_DATE(2) := V_DATE(2) - 100;
103
104 IF ((V_DATE(1) < 0) OR (V_DATE(2) < 0)) THEN
105 V_DATE_STR := '-' LTRIM(TO_CHAR(ABS(V_DATE(1)), '00')) LTRIM(TO_CHAR(ABS(V_DATE(2)), '00'));
106 ELSE
107 V_DATE_STR := LTRIM(TO_CHAR(ABS(V_DATE(1)), '00')) LTRIM(TO_CHAR(ABS(V_DATE(2)),'00'));
108 END IF;
109
110 V_DATE_STR := V_DATE_STR '-' TO_CHAR(V_DATE(3)) '-' TO_CHAR(V_DATE(4)) ' '
111 TO_CHAR(V_DATE(5) - 1) ':' TO_CHAR(V_DATE(6) - 1) ':' TO_CHAR(V_DATE(7) - 1);
112 RETURN (V_DATE_STR);
113 ELSIF V_COLUMN_TYPE LIKE 'TIMESTAMP(_)' THEN
114
115 V_DUMP_ROWID := ',' V_DUMP_ROWID ',';
116
117 FOR I IN 1..11 LOOP
118 V_DATE(I) := TO_NUMBER(SUBSTR(V_DUMP_ROWID, INSTR(V_DUMP_ROWID, ',', 1, I) + 1,
119 INSTR(V_DUMP_ROWID, ',', 1, I + 1) - INSTR(V_DUMP_ROWID, ',', 1, I) - 1), 'XXX');
120 END LOOP;
121
122 V_DATE(1) := V_DATE(1) - 100;
123 V_DATE(2) := V_DATE(2) - 100;
124
125 IF ((V_DATE(1) < 0) OR (V_DATE(2) < 0)) THEN
126 V_DATE_STR := '-' LTRIM(TO_CHAR(ABS(V_DATE(1)), '00')) LTRIM(TO_CHAR(ABS(V_DATE(2)), '00'));
127 ELSE
128 V_DATE_STR := LTRIM(TO_CHAR(ABS(V_DATE(1)), '00')) LTRIM(TO_CHAR(ABS(V_DATE(2)),'00'));
129 END IF;
130
131 V_DATE_STR := V_DATE_STR '-' TO_CHAR(V_DATE(3)) '-' TO_CHAR(V_DATE(4)) ' '
132 TO_CHAR(V_DATE(5) - 1) ':' TO_CHAR(V_DATE(6) - 1) ':' TO_CHAR(V_DATE(7) - 1) '.'
133 SUBSTR(TO_CHAR(V_DATE(8) * POWER(256, 3) + V_DATE(9) * POWER(256, 2) + V_DATE(10) * 256 + V_DATE(11)),
134 1, TO_NUMBER(SUBSTR(V_COLUMN_TYPE, 11, 1)));
135 RETURN (V_DATE_STR);
136 ELSIF V_COLUMN_TYPE = 'RAW' THEN
137
138 V_DUMP_ROWID :=F_ADD_PREFIX_ZERO(V_DUMP_ROWID ',', INSTR(V_DUMP_ROWID, ','));
上一篇:Oracle如何配置逻辑备用数据库
下一篇:Sql server动态建立数据对象结构
|