Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, Estou com um pequeno problema, eu estou quero montar um e-mail em formato html,pelo oracle,Ate ai sem, problemas,so que eu quero montar as colunas da tabela dinamicamentes baseado na consulta que eu passar,este o meu problema,náo sei como,ja testei, passando a consulta, e com qt fixas de coluna e deu certoMas qeuro fazer um loop nas colunas de cada linha,Ai vai um resumo do codigo, se poderem me ajudar. declaresmtp utl_smtp.connection;SqlCursor pls_integer;NumRows pls_integer;TYPE TCol IS TABLE OF dbms_sql.varchar2_table INDEX BY BINARY_INTEGER;vCol TCol ;NCol integer;Coluna integer;Linha Integer;beginNCol:=3;smtp:=utl_smtp.open_connection(servidor,25);-- Comfiguraçoes do UTL_SMTP etc .....--Esta e a parte importanteSqlCursor := dbms_sql.open_cursor;dbms_sql.parse(SqlCursor, 'select ..... from ...',cmd,DBMS_SQL.NATIVE);Coluna:=0;for Coluna in 1..nCol loopdbms_sql.define_array(SqlCursor,Coluna, vCol(Coluna), 10, 1);end loop; Coluna:=0;loopNumRows := dbms_sql.fetch_rows(SqlCursor);IF NOT NUMROWS=0 THEN for Coluna in 1..nCol loopdbms_sql.column_value(SqlCursor,Coluna, vCol(Coluna));end loop; ELSEEXIT;END IF;end loop; dbms_sql.close_cursor(SqlCursor); for Linha in 1..vCol(1).count loopUTL_SMTP.WRITE_DATA(smtp,'<tr>'|| UTL_TCP.CRLF);Coluna:=0;for Coluna in 1..Ncol loopUTL_SMTP.WRITE_DATA(smtp,'<td>');utl_smtp.write_raw_data(smtp,utl_raw.cast_to_raw(vCol(Coluna)(Linha))); ----Este e o meu problema,coloqeui assim para melhor inlustrar.UTL_SMTP.WRITE_DATA(smtp,'</td>');END loop; UTL_SMTP.WRITE_DATA(smtp,'</tr>');end loop; UTL_SMTP.WRITE_DATA(smtp,'</table></body></html>');UTL_SMTP.CLOSE_DATA(smtp);UTL_SMTP.QUIT(smtp);EXCEPTIONWHEN utl_smtp.transient_error OR utl_smtp.permanent_error THENBEGINUTL_SMTP.QUIT(smtp);EXCEPTIONWHEN UTL_SMTP.TRANSIENT_ERROR OR UTL_SMTP.PERMANENT_ERROR THENtrata o erro
Carregando comentários...