1
resposta

Minha resolução da atividade

SET SERVEROUTPUT ON;
SET ECHO ON;
SET TIMING ON;
DECLARE
    V_SERVER_HOST   CONSTANT VARCHAR2(100) := LOWER(SYS_CONTEXT('USERENV','SERVER_HOST'));
    V_SESSION_USER  CONSTANT VARCHAR2(100) := LOWER(SYS_CONTEXT('USERENV','SESSION_USER'));
    V_INSTANCE_NAME CONSTANT VARCHAR2(100) := LOWER(SYS_CONTEXT('USERENV','INSTANCE_NAME'));
    V_SERVICE_NAME  CONSTANT VARCHAR2(100) := LOWER(SYS_CONTEXT('USERENV','INSTANCE_NAME'));    
    -- Constantes para os valores fixos
    v_COD           CONSTANT produto_exercicio.cod%type := '32223';
    v_DESCRICAO     CONSTANT produto_exercicio.descricao%type := 'Sabor de Verão - Uva - 1 Litro';
    v_CATEGORIA     CONSTANT produto_exercicio.categoria%type := 'Sucos de Frutas';
    -- Mensagens de erro
    V_ROLLBACK_MSG   CONSTANT VARCHAR2(100) := 'Realizando Rollback.';
    V_ERROR_MSG      CONSTANT VARCHAR2(100) := 'Erro na execução do script';
BEGIN
    DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE('Início Script.: ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')
                         || ' - ' || V_SESSION_USER|| '@' || V_INSTANCE_NAME|| '/' || V_SERVICE_NAME|| '(' || V_SERVER_HOST ||')');
    DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------------------------------------'); 
    INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, REPLACE(v_DESCRICAO, '-', '>'), v_CATEGORIA);
    DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' linha(s) inserida(s).');
    COMMIT;
    DBMS_OUTPUT.PUT_LINE('Script executado com sucesso.');
    DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE('Fim Script.: ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')
                         || ' - ' || V_SESSION_USER|| '@' || V_INSTANCE_NAME|| '/' || V_SERVICE_NAME|| '(' || V_SERVER_HOST ||')');
    DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------------------------------------');    
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(V_ROLLBACK_MSG);
        ROLLBACK;
        DBMS_OUTPUT.PUT_LINE(V_ERROR_MSG || ': [' || SQLERRM || '].');
        DBMS_OUTPUT.PUT_LINE('Error_Stack...' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK());
        DBMS_OUTPUT.PUT_LINE('Error_Backtrace...' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE());
END;
/
1 resposta

Olá Thiago,

Parabéns por seu desenvolvimento no curso. O código está correto.

Conte com o fórum sempre que tiver dúvidas.

Abração!