
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


1