PostgreSQL - Generar Comentario 2

 
Vista:
Imágen de perfil de outrera

Generar Comentario 2

Publicado por outrera (35 intervenciones) el 01/04/2014 19:11:03
1
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
CREATE OR REPLACE FUNCTION utils.psp_comentar_func_autor(p_schemaname character varying)
  RETURNS void AS
$BODY$
DECLARE
	oRecord  record;
	oCommentBody text;
	oAutor character varying;
	oTipo character varying;
	nIndice integer;
	oContadorFunciones integer;
	oFechaActual date;
	aAutores character varying[]:= ARRAY(SELECT nombre FROM utils.desarrollador order by id_desarrollador);
 
	oAbrevAct character varying;
	oAbrevOld character varying;
 
	oMaximoFunciones integer;
 
 
 
BEGIN
 
	oCommentBody='';
 
	nIndice:=1;
 
	oContadorFunciones:=0;
 
	oFechaActual:= now()::date;
 
	oAbrevAct := '';
 
	oAbrevOld:= '';
 
 
	FOR oRecord IN
		SELECT n.nspname as "esquema",
		p.proname as "funcion",
		pg_catalog.pg_get_function_result(p.oid) as "resultado",
		pg_catalog.pg_get_function_arguments(p.oid) as "parametros",
		obj_description(p.oid) as "comentario"
		FROM pg_catalog.pg_proc p
		LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
		WHERE n.nspname = p_schemaname
		ORDER BY 2
	LOOP
 
--and obj_description(p.oid) is null
 
 
 
 
 
 
	oAbrevAct := substring(oRecord.funcion,1,3);
 
 
	oTipo := CASE substring(oRecord.funcion,1,3)
		WHEN 'psi' THEN ' Insert (Insertar)'
		WHEN 'psu' THEN ' Update (Actualizar) '
		WHEN 'psd' THEN ' Delete (Eliminar) '
		WHEN 'pss' THEN ' Select (Consultar) '
		ELSE ' procesos '
 
       END;
 
 
 
 
 
	IF oAbrevAct!= oAbrevOld THEN -- si hay cambio de funciones desde la primera
 
		oAbrevOld:=oAbrevAct;
 
		oContadorFunciones:=0;
 
		oMaximoFunciones := CASE oAbrevAct
			WHEN 'psd' THEN 16
			WHEN 'psi' THEN 8
			WHEN 'psu' THEN 8
			WHEN 'pss' THEN 16
			ELSE 16
	       END;
 
 
 
 
	END IF;
 
	oContadorFunciones:=oContadorFunciones+1;
 
	IF oContadorFunciones>oMaximoFunciones Then
	   oContadorFunciones:=0;
	   oFechaActual:= oFechaActual+'1 day'::interval ; --incrementa un dia
 
		--Saltar fines de semana
		IF EXTRACT(DOW FROM oFechaActual) = 6 THEN
			oFechaActual:= oFechaActual+'2 day'::interval ;
		END IF;
 
		IF EXTRACT(DOW FROM oFechaActual) = 7 THEN
			oFechaActual:= oFechaActual+'1 day'::interval ;
		END IF;
 
	END IF;
 
 
	RAISE NOTICE 'fechas %', trim(oFechaActual::text);
 
 
	IF nIndice>4 THEN
		nIndice:=1;
	END IF;
 
 
 
 
	oCommentBody := ' COMMENT ON FUNCTION ' || trim(p_schemaname) || '.' ||trim(oRecord.funcion::character varying) ||  utils.psp_parametros_function( p_schemaname,oRecord.funcion::character varying) || ' IS ';
 
 
 
	oCommentBody :=  oCommentBody || CHR(39) ||'Procedimiento para '  || oTipo ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||' -- ===================================================' ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- Titulo: ' ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- Descripción: Procesos de ' ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- Autor: ' || aAutores[nIndice] ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- Creado: ' || trim(oFechaActual::text)  ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- Modificado: ' ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'--					' ||CHR(13) || CHR(10);
	oCommentBody :=  oCommentBody ||'-- ==================================================='||CHR(39) || ';';
 
 
	EXECUTE ''||oCommentBody ||'' ;
 
	RAISE NOTICE 'comentando %', oCommentBody;
 
	nIndice:=nIndice+1;
 
 
	END LOOP;
 
 
 
 
 
 
 
 
 
	return  ;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder