93:
94: code.object_id := X_object_id;
95: code.line := 1;
96: code.indent := 0;
97: DBMS_LOB.FREETEMPORARY(code.text);
98: DBMS_LOB.CREATETEMPORARY(code.text,false,DBMS_LOB.CALL);
99:
100: END init_code;
101: -- end clob
94: code.object_id := X_object_id;
95: code.line := 1;
96: code.indent := 0;
97: DBMS_LOB.FREETEMPORARY(code.text);
98: DBMS_LOB.CREATETEMPORARY(code.text,false,DBMS_LOB.CALL);
99:
100: END init_code;
101: -- end clob
102:
142: PROCEDURE append (code IN OUT NOCOPY cn_utils.clob_code_type,
143: str2 VARCHAR2) IS
144: BEGIN
145:
146: DBMS_LOB.WRITEAPPEND(code.text,length(str2),str2);
147:
148: END append;
149: --end clob
150:
153: expr clob,
154: str2 VARCHAR2) IS
155: BEGIN
156:
157: DBMS_LOB.APPEND(code.text,expr);
158: DBMS_LOB.WRITEAPPEND(code.text,length(str2),str2);
159:
160: END append;
161: --end clob
154: str2 VARCHAR2) IS
155: BEGIN
156:
157: DBMS_LOB.APPEND(code.text,expr);
158: DBMS_LOB.WRITEAPPEND(code.text,length(str2),str2);
159:
160: END append;
161: --end clob
162:
174: PROCEDURE appind (code IN OUT NOCOPY cn_utils.clob_code_type,
175: str2 VARCHAR2) IS
176: BEGIN
177:
178: DBMS_LOB.WRITEAPPEND(code.text,length(str2),str2);
179:
180: END appind;
181: --end clob
182:
194:
195: line := '
196: ';
197:
198: DBMS_LOB.WRITEAPPEND(code.text,length(line),line);
199: cn_utils.dump_line( code );
200:
201: END appendcr;
202: --end clob
218:
219: line := str2 || '
220: ';
221:
222: DBMS_LOB.WRITEAPPEND(code.text,length(line),line);
223: cn_utils.dump_line( code );
224:
225: END appendcr;
226: --end clob
240:
241: line := spaces(code.indent) || str2 || '
242: ';
243:
244: DBMS_LOB.WRITEAPPEND(code.text,length(line),line);
245:
246: cn_utils.dump_line( code );
247:
248: END appindcr;
359: raise null_org_id;
360: end if;
361:
362: l_prev_pos := 1;
363: DBMS_LOB.CREATETEMPORARY(l_clob_text,FALSE,DBMS_LOB.CALL);
364:
365: -- If the length of the expression is less than 1900 characters
366: -- the expression can be inserted directly into cn_source
367: -- otherwise need to find the close braces and insert the string
369: -- l_curr_pos - is used to store the no. of characters between the previously found
370: -- paranthesis and the newly found paranthesis
371: -- l_prev_pos - is used to store the previous position of previously found parantesis
372:
373: IF DBMS_LOB.GETLENGTH(code.text) > 1900 then
374: DBMS_LOB.COPY(l_clob_text,code.text,DBMS_LOB.GETLENGTH(code.text),1,1);
375: LOOP
376:
377: l_curr_pos := abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos) - l_prev_pos) + 1;
370: -- paranthesis and the newly found paranthesis
371: -- l_prev_pos - is used to store the previous position of previously found parantesis
372:
373: IF DBMS_LOB.GETLENGTH(code.text) > 1900 then
374: DBMS_LOB.COPY(l_clob_text,code.text,DBMS_LOB.GETLENGTH(code.text),1,1);
375: LOOP
376:
377: l_curr_pos := abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos) - l_prev_pos) + 1;
378:
373: IF DBMS_LOB.GETLENGTH(code.text) > 1900 then
374: DBMS_LOB.COPY(l_clob_text,code.text,DBMS_LOB.GETLENGTH(code.text),1,1);
375: LOOP
376:
377: l_curr_pos := abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos) - l_prev_pos) + 1;
378:
379: l_text1 :=DBMS_LOB.SUBSTR(l_clob_text,l_curr_pos,l_prev_pos);
380:
381: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
375: LOOP
376:
377: l_curr_pos := abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos) - l_prev_pos) + 1;
378:
379: l_text1 :=DBMS_LOB.SUBSTR(l_clob_text,l_curr_pos,l_prev_pos);
380:
381: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
382: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line,l_text1, g_org_id);
383:
380:
381: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
382: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line,l_text1, g_org_id);
383:
384: DBMS_LOB.ERASE(l_clob_text,l_curr_pos,l_prev_pos);
385:
386:
387: code.line := code.line + 1 ;
388: l_prev_pos := l_prev_pos + l_curr_pos ;
386:
387: code.line := code.line + 1 ;
388: l_prev_pos := l_prev_pos + l_curr_pos ;
389:
390: IF nvl(abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos)),0) = 0 THEN
391: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
392: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line,DBMS_LOB.SUBSTR(l_clob_text,DBMS_LOB.GETLENGTH(code.text)-l_prev_pos,l_prev_pos), g_org_id);
393: EXIT;
394: END IF;
388: l_prev_pos := l_prev_pos + l_curr_pos ;
389:
390: IF nvl(abs(DBMS_LOB.INSTR(l_clob_text,')',l_prev_pos)),0) = 0 THEN
391: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
392: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line,DBMS_LOB.SUBSTR(l_clob_text,DBMS_LOB.GETLENGTH(code.text)-l_prev_pos,l_prev_pos), g_org_id);
393: EXIT;
394: END IF;
395:
396: END LOOP;
394: END IF;
395:
396: END LOOP;
397:
398: codelen := DBMS_LOB.GETLENGTH(code.text);
399:
400: ELSE
401: codelen := DBMS_LOB.GETLENGTH(code.text);
402: DBMS_LOB.READ(code.text,codelen,1,l_text1);
397:
398: codelen := DBMS_LOB.GETLENGTH(code.text);
399:
400: ELSE
401: codelen := DBMS_LOB.GETLENGTH(code.text);
402: DBMS_LOB.READ(code.text,codelen,1,l_text1);
403: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
404: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line, l_text1, g_org_id);
405: END IF;
398: codelen := DBMS_LOB.GETLENGTH(code.text);
399:
400: ELSE
401: codelen := DBMS_LOB.GETLENGTH(code.text);
402: DBMS_LOB.READ(code.text,codelen,1,l_text1);
403: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
404: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line, l_text1, g_org_id);
405: END IF;
406:
403: INSERT into cn_source (source_id, object_id, line_no, text, org_id)
404: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line, l_text1, g_org_id);
405: END IF;
406:
407: DBMS_LOB.ERASE(code.text,codelen,1);
408: DBMS_LOB.FREETEMPORARY(l_clob_text);
409: DBMS_LOB.FREETEMPORARY(code.text);
410: DBMS_LOB.CREATETEMPORARY(code.text,FALSE,DBMS_LOB.CALL);
411:
404: VALUES (cn_source_s.NEXTVAL, code.object_id, code.line, l_text1, g_org_id);
405: END IF;
406:
407: DBMS_LOB.ERASE(code.text,codelen,1);
408: DBMS_LOB.FREETEMPORARY(l_clob_text);
409: DBMS_LOB.FREETEMPORARY(code.text);
410: DBMS_LOB.CREATETEMPORARY(code.text,FALSE,DBMS_LOB.CALL);
411:
412: code.line := code.line + 1 ;
405: END IF;
406:
407: DBMS_LOB.ERASE(code.text,codelen,1);
408: DBMS_LOB.FREETEMPORARY(l_clob_text);
409: DBMS_LOB.FREETEMPORARY(code.text);
410: DBMS_LOB.CREATETEMPORARY(code.text,FALSE,DBMS_LOB.CALL);
411:
412: code.line := code.line + 1 ;
413:
406:
407: DBMS_LOB.ERASE(code.text,codelen,1);
408: DBMS_LOB.FREETEMPORARY(l_clob_text);
409: DBMS_LOB.FREETEMPORARY(code.text);
410: DBMS_LOB.CREATETEMPORARY(code.text,FALSE,DBMS_LOB.CALL);
411:
412: code.line := code.line + 1 ;
413:
414: END dump_line;