2
respostas

Uso do IN OUT em procedure incluir_cliente

Diante da aula me surgiu uma dúvida. Quando o professor criou a procedure format_cnpj ele utilizou o comando p_cnpj IN OUT cliente.cnpj%type.

Até ai tudo bem, porém ao tentar fazer a mesma coisa na procedure incluir_cliente ele não permite e gera um erro. Alguém consegue me explicar o porquê disso ocorrer? Creio que seja devido a não retornar esse valor, mas não ficou claro para mim. :(

create or replace PROCEDURE incluir_cliente(
    p_id in cliente.id%type,
    p_razao_social IN cliente.razao_social%type,
    p_CNPJ IN OUT  cliente.CNPJ%type,
    p_segmercado_id IN cliente.segmercado_id%type,
    p_faturamento_previsto IN cliente.faturamento_previsto%type
)
IS
    v_categoria cliente.categoria%type;
BEGIN
    v_categoria := categoria_cliente(p_faturamento_previsto);
    format_cnpj(p_cnpj);
    INSERT INTO cliente values(
        p_id,
        p_razao_social ,
        p_CNPJ,
        p_segmercado_id ,
        SYSDATE,
        p_faturamento_previsto,
        v_categoria
    );
    COMMIT;
END;

Obrigado desde já :)

2 respostas

pode compartilhar a mensagem de erro?

Ele até executa e compila a procedure, mas gera esse erro na hora de criar.Na linha 25 é onde eu fiz: EXECUTE incluir_cliente(4,'Empresa A','888888', 1,123000;

Erro a partir da linha : 25 no comando -
BEGIN incluir_cliente(4,'Empresa A','888888', 1,123000); END;
Relatório de erros -
ORA-06550: linha 1, coluna 350:
PLS-00363: a expressão 'TO_CHAR(SQLDEVBIND1Z_3)' não pode ser usada como um destino de designação
ORA-06550: linha 1, coluna 282:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action