Em 01/07/11, Jeanne Louize Emygdio<[email protected]> escreveu: > Bom...como nem tudo são flores...voltei... > > Durante a execução do código modificado após minha última postagem aqui, > obtive o seguinte erro: > > * > --------------------------------------------------------------------------------------------------------------------------------- > * > > *Erro de SQL:* > > ERRO: não pôde encontrar tipo array para tipo de dado gvc_docpend > CONTEXT: comando SQL "SELECT 'INSERT INTO' || $1 || '(' > ||dcp_alumatric|| ',' ||dcp_aludocdescr|| ') VALUES (' || $2 || ',' || > $3 || ')'" > PL/pgSQL function "doc_pendentes" line 13 at execute statement > > *Indicação de entrada :* > select doc_pendentes(); > * > --------------------------------------------------------------------------------------------------------------------------------- > * > O código atual é: > > * > --------------------------------------------------------------------------------------------------------------------------------- > * > > DECLARE > doc_nomedoc varchar; > t_docp gvc_docpend%rowtype; > men RECORD; > BEGIN > FOR men IN SELECT men_cal1||men_cal2 AS matric, men_men1 AS men1, > men_men2 AS men2 > FROM fai__men > LOOP > IF men.matric is not null THEN > if (UPPER(COALESCE(men.men1,'')|| COALESCE(men.men2,'')) > LIKE '%NASCIMENTO%') then > doc_nomedoc := 'Certidão de nascimento'; > EXECUTE 'INSERT INTO' ||t_docp|| '(' ||dcp_alumatric|| > ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| ',' > ||doc_nomedoc|| ')' ; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%CASAMENTO%') then > doc_nomedoc := 'Certidão de casamento'; > EXECUTE 'INSERT INTO' ||t_docp|| '(' ||dcp_alumatric|| > ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| ',' > ||doc_nomedoc|| ')'; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%HISTORICO%') then > doc_nomedoc := 'Histórico Escolar'; > EXECUTE 'INSERT INTO' ||t_docp|| '(' ||dcp_alumatric|| > ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| ',' > ||doc_nomedoc|| ')'; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%IDENTIDADE%') then > doc_nomedoc := 'Documento de Identidade'; > EXECUTE 'INSERT INTO' ||t_docp|| '(' ||dcp_alumatric|| > ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| ',' > ||doc_nomedoc|| ')'; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%TITULO%') then > doc_nomedoc := 'Título de eleitor'; > EXECUTE 'INSERT INTO' ||t_docp|| '(' ||dcp_alumatric|| > ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| ',' > ||doc_nomedoc|| ')'; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%RESERVISTA%') then > doc_nomedoc := 'Certificado de Reservista'; > EXECUTE 'INSERT INTO' ||gvc_docpend|| '(' > ||dcp_alumatric|| ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| > ',' ||doc_nomedoc|| ')'; > end if; > if (UPPER(COALESCE(men.men1,'') || COALESCE(men.men2,'')) > LIKE '%FOTOS%') then > doc_nomedoc := 'Fotos 3x4'; > EXECUTE 'INSERT INTO' ||gvc_docpend|| '(' > ||dcp_alumatric|| ',' ||dcp_aludocdescr|| ') VALUES (' ||men.matric|| > ',' ||doc_nomedoc|| ')'; > end if; > END IF; > END LOOP;END; > > * > --------------------------------------------------------------------------------------------------------------------------------- > > *Se a minha dúvida for muito básica para esta lista podem me direcionar para > a lista correta, ok?* >
Não entendi algumas coisas: - t_docp é uma variável do tipo linha conforme a definição de gvc_docpend. Ela não é uma tabela, não tem sentido você tentar dar um INSERT nela. - da maneira como você encadeou seus comandos if dá a entender que um mesmo registro mem pode atender a diversas condições, isto é uma fato? - porque você não faz: FOR men IN SELECT men_cal1||men_cal2 AS matric, upper(coalesce(men_men1,'') || coalesce(men_men2,'')) AS menx FROM fai__men e simplifica seus testes. - dcp_alumatric e dcp_aludocdescr são efetivamente variáveis cujo conteúdo é o nome do campo a ser inserido? Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
