The name 'parameters' does not exist in the current context

1

I have the following code and it is giving the following error:

  

The name 'sql' does not exist in the current context The name   'parametros' does not exist in the current context

Can anyone help me please? Thanks in advance ...

public DataSet PesquisarProtocolos(string usuarioAutenticado, long? codigoProcotolo, int? codigoMenu, string campoPesquisaDinamica, string valorPesquisaDinamica, string periodo, int? mes, int? ano, int? codigoStatus, int? codigoMotivo, int? codigoTipoRemuneracao, int? codigoGrupoContestacao, int? codigoTipoContestacao, int? codigoMotivoContestacao, bool carregarDivergentes, int? perfil = null, string parceirosGestaoCarteira = "", int codigoCargo = 0)
        {
            if ((codigoCargo == 9) || (codigoCargo == 1029) || (codigoCargo == 1030))
            { 
                //vou colocar depois o código
            }
            else if ((codigoCargo == 8) || (codigoCargo == 11)) 
            {
                //vou colocar depois o código
            }
            else
            {
                 string sql = string.Format(@"
                SELECT DISTINCT     
                       C.[COD_PROTOCOLO_CONTESTACAO]
                      ,C.[COD_PROTOCOLO_CONTESTACAO_RELACIONADO]
                      ,C.[QTD_LINHAS_PROCESSADAS]
                      ,C.[QTD_LINHAS_DIVERGENTES]
                      ,(SELECT TOP 1 LOGIN FROM ADM_USUARIO U WHERE U.cod_usuario = C.COD_USUARIO_RESPONSAVEL) [COD_USUARIO_RESPONSAVEL]
                      ,C.[DSC_PERIODO_PAGAMENTO]
                      ,C.[NUM_ANO_PAGAMENTO]
                      ,C.[NUM_MES_PAGAMENTO]
                      ,C.[COD_ESPELHO_ASSOCIACAO]
                     ,C.[COD_TIPO_REMUNERACAO]
                      ,C.[NUM_MES_REFERENCIA]
                      ,C.[NUM_ANO_REFERENCIA]
                      ,C.[COD_PARCEIRO_REFERENCIA]
                      ,C.[DT_CRIACAO]
                      ,C.[DSC_ARQUIVO]
                      ,C.[DT_ATUALIZACAO]
                      ,TR.DESC_TIPO_REMUNERACAO  
                      ,SP.desc_status_processo
                      ,AM.desc_motivo
                      ,DATEDIFF(DAY, HP.DT_HISTORICO, GETDATE()) AS SLA
                      ,P.cnpj_parceiro
                      ,P.nom_razao_social
                      ,E.NUM_MES_COMISSAO
                      ,E.NUM_ANO_COMISSAO
                    ,case when  c.cod_tipo_remuneracao=4 then 'Mensal' else T.desc_tipo_quinzena end AS PERIODO
            FROM [CON_PROTOCOLO_CONTESTACAO] C
            LEFT JOIN REM_ESPELHO E ON E.COD_ESPELHO = CAST(C.COD_ESPELHO_ASSOCIACAO AS BIGINT)
            LEFT JOIN GAC_TIPO_QUINZENA T ON T.cod_tipo_quinzena = E.cod_periodo_Comissao
            INNER JOIN ADM_TIPO_REMUNERACAO TR ON TR.cod_tipo_remuneracao = C.cod_tipo_remuneracao
            INNER JOIN CON_CONTESTACAO_HISTORICO_PROCESSO HP ON HP.COD_PROTOCOLO_CONTESTACAO = C.COD_PROTOCOLO_CONTESTACAO  AND DT_MUDANCA_FILA is null 
            INNER JOIN ADM_STATUS_PROCESSO SP ON SP.cod_status_processo = HP.cod_status_processo
            INNER JOIN ADM_MOTIVO AM ON AM.cod_motivo = HP.COD_MOTIVO
            LEFT JOIN GDC_PARCEIRO P ON P.cod_parceiro = C.COD_PARCEIRO_REFERENCIA
            LEFT JOIN GDC_SEGMENTO SG ON SG.cod_segmento = P.cod_segmento
            LEFT JOIN GDC_CANAL canal ON canal.cod_canal = SG.cod_canal
            LEFT JOIN GDC_CANAL_PERFIL perfil ON perfil.cod_canal_perfil = canal.cod_canal_perfil
        WHERE   
            (C.COD_PROTOCOLO_CONTESTACAO = @COD_PROTOCOLO_CONTESTACAO OR @COD_PROTOCOLO_CONTESTACAO IS NULL)
            AND (perfil.cod_canal_perfil = @PERFIL OR @PERFIL IS NULL)
            AND (
                @LOGIN IS NULL
                OR (COD_USUARIO_RESPONSAVEL IS NULL OR COD_USUARIO_RESPONSAVEL = '')
                OR (COD_USUARIO_RESPONSAVEL IS NOT NULL AND COD_USUARIO_RESPONSAVEL = (SELECT cod_usuario FROM ADM_USUARIO WHERE Login = @LOGIN))
                OR (SELECT COUNT(*) FROM ADM_USUARIO where sit_libera_pedido = 1 AND Login = @LOGIN) = 1)
            AND (@COD_MENU IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (
                    SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO 
                    WHERE COD_MENU = @COD_MENU AND DT_MUDANCA_FILA IS NULL 
                    AND (DATEPART(MONTH,DT_HISTORICO) = @MES OR @MES IS NULL) AND (DATEPART(YEAR,DT_HISTORICO) = @ANO OR @ANO IS NULL) 
                ))
            {0}
            AND (@PERIODO IS NULL  OR @PERIODO = DSC_PERIODO_PAGAMENTO)
            AND (C.COD_TIPO_REMUNERACAO = @COD_TIPO_REMUNERACAO OR @COD_TIPO_REMUNERACAO IS NULL)
            AND (@COD_GRUPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_GRUPO_CONTESTACAO = @COD_GRUPO_CONTESTACAO))
            AND (@COD_TIPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_TIPO_CONTESTACAO = @COD_TIPO_CONTESTACAO))
            AND (@COD_MOTIVO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_MOTIVO_CONTESTACAO = @COD_MOTIVO_CONTESTACAO))
            AND (@COD_STATUS IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_STATUS_PROCESSO = @COD_STATUS AND DT_MUDANCA_FILA IS NULL))
            AND (@COD_MOTIVO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_MOTIVO = @COD_MOTIVO AND DT_MUDANCA_FILA IS NULL))
            AND (@CARREGAR_DIVERGENTES = 1 OR (@CARREGAR_DIVERGENTES = 0 AND C.COD_PROTOCOLO_CONTESTACAO IN (select cod_protocolo_contestacao from CON_CONTESTACAO_ESPELHO_ITEM where sit_divergente = 0)))
             ", string.IsNullOrEmpty(parceirosGestaoCarteira) ? "" : string.Format("AND P.cod_parceiro IN ({0})", parceirosGestaoCarteira)); ;

            Dictionary<string, object> parametros = new Dictionary<string, object>();
            if (!string.IsNullOrEmpty(valorPesquisaDinamica) && !string.IsNullOrEmpty(campoPesquisaDinamica))
            {
                sql += string.Format("AND (CAST({0} AS VARCHAR(MAX)) LIKE '%' + @VALOR_PESQUISA_DINAMICA + '%')", campoPesquisaDinamica, valorPesquisaDinamica);
                parametros.Add("@VALOR_PESQUISA_DINAMICA", valorPesquisaDinamica);
            }

            sql += "  ORDER BY SLA DESC ";

            parametros.Add("@LOGIN", usuarioAutenticado ?? (object)DBNull.Value);
            parametros.Add("@PERFIL", perfil ?? (object)DBNull.Value);
            parametros.Add("@COD_PROTOCOLO_CONTESTACAO", codigoProcotolo ?? (object)DBNull.Value);
            parametros.Add("@CARREGAR_DIVERGENTES", carregarDivergentes ? 1 : 0);
            parametros.Add("@COD_MENU", codigoMenu ?? (object)DBNull.Value);
            parametros.Add("@PERIODO", periodo ?? (object)DBNull.Value);
            parametros.Add("@MES", mes ?? (object)DBNull.Value);
            parametros.Add("@ANO", ano ?? (object)DBNull.Value);
            parametros.Add("@COD_STATUS", codigoStatus ?? (object)DBNull.Value);
            parametros.Add("@COD_MOTIVO", codigoMotivo ?? (object)DBNull.Value);
            parametros.Add("@COD_TIPO_REMUNERACAO", codigoTipoRemuneracao ?? (object)DBNull.Value);
            parametros.Add("@COD_GRUPO_CONTESTACAO", codigoGrupoContestacao ?? (object)DBNull.Value);
            parametros.Add("@COD_TIPO_CONTESTACAO", codigoTipoContestacao ?? (object)DBNull.Value);
            parametros.Add("@COD_MOTIVO_CONTESTACAO", codigoMotivoContestacao ?? (object)DBNull.Value);

        }

        using (TFPlusDO db = GetConnection<TFPlusDO>())
        {
            return db.Query(sql, parametros);
        }

    }
    
asked by anonymous 15.04.2015 / 19:18

2 answers

2

In C # (and in many other languages), there are scopes , which are contexts that delimit the working area of a variable, for example.

If you try to do

public String Foo(int y, int x) //escopo externo
{
    if (x == y) //escopo interno
    {
        String z = "Igual";
    }
    return z;
}

It will give error, because z is in a more internal scope than return .

In C #, a trick you can use to not forget this is: anything that is declared inside the keys, can not be referenced outside of them.

The problem with your code is that you simply declared the variables sql and parametros in different scopes.

Pull them to a level above, outside the else, and everything will be ok.

public DataSet PesquisarProtocolos(argumentos...)
{
    String sql;
    Dictionary<string, object> parametros;
}
    
15.04.2015 / 20:08
1

Do as this will solve your problem:

* Note that I just insert the variables at the beginning of the method. Depending on your application, you may need to perform a check on the variables.

public DataSet PesquisarProtocolos(string usuarioAutenticado, long? codigoProcotolo, int? codigoMenu, string campoPesquisaDinamica, string valorPesquisaDinamica, string periodo, int? mes, int? ano, int? codigoStatus, int? codigoMotivo, int? codigoTipoRemuneracao, int? codigoGrupoContestacao, int? codigoTipoContestacao, int? codigoMotivoContestacao, bool carregarDivergentes, int? perfil = null, string parceirosGestaoCarteira = "", int codigoCargo = 0)
{
    Dictionary<string, object> parametros = new Dictionary<string, object>();
    string sql = string.Empty;
    if ((codigoCargo == 9) || (codigoCargo == 1029) || (codigoCargo == 1030))
    {
        //vou colocar depois o código
    }
    else if ((codigoCargo == 8) || (codigoCargo == 11))
    {
        //vou colocar depois o código
    }
    else
    {
        sql = string.Format(@"
    SELECT DISTINCT     
            C.[COD_PROTOCOLO_CONTESTACAO]
            ,C.[COD_PROTOCOLO_CONTESTACAO_RELACIONADO]
            ,C.[QTD_LINHAS_PROCESSADAS]
            ,C.[QTD_LINHAS_DIVERGENTES]
            ,(SELECT TOP 1 LOGIN FROM ADM_USUARIO U WHERE U.cod_usuario = C.COD_USUARIO_RESPONSAVEL) [COD_USUARIO_RESPONSAVEL]
            ,C.[DSC_PERIODO_PAGAMENTO]
            ,C.[NUM_ANO_PAGAMENTO]
            ,C.[NUM_MES_PAGAMENTO]
            ,C.[COD_ESPELHO_ASSOCIACAO]
            ,C.[COD_TIPO_REMUNERACAO]
            ,C.[NUM_MES_REFERENCIA]
            ,C.[NUM_ANO_REFERENCIA]
            ,C.[COD_PARCEIRO_REFERENCIA]
            ,C.[DT_CRIACAO]
            ,C.[DSC_ARQUIVO]
            ,C.[DT_ATUALIZACAO]
            ,TR.DESC_TIPO_REMUNERACAO  
            ,SP.desc_status_processo
            ,AM.desc_motivo
            ,DATEDIFF(DAY, HP.DT_HISTORICO, GETDATE()) AS SLA
            ,P.cnpj_parceiro
            ,P.nom_razao_social
            ,E.NUM_MES_COMISSAO
            ,E.NUM_ANO_COMISSAO
        ,case when  c.cod_tipo_remuneracao=4 then 'Mensal' else T.desc_tipo_quinzena end AS PERIODO
FROM [CON_PROTOCOLO_CONTESTACAO] C
LEFT JOIN REM_ESPELHO E ON E.COD_ESPELHO = CAST(C.COD_ESPELHO_ASSOCIACAO AS BIGINT)
LEFT JOIN GAC_TIPO_QUINZENA T ON T.cod_tipo_quinzena = E.cod_periodo_Comissao
INNER JOIN ADM_TIPO_REMUNERACAO TR ON TR.cod_tipo_remuneracao = C.cod_tipo_remuneracao
INNER JOIN CON_CONTESTACAO_HISTORICO_PROCESSO HP ON HP.COD_PROTOCOLO_CONTESTACAO = C.COD_PROTOCOLO_CONTESTACAO  AND DT_MUDANCA_FILA is null 
INNER JOIN ADM_STATUS_PROCESSO SP ON SP.cod_status_processo = HP.cod_status_processo
INNER JOIN ADM_MOTIVO AM ON AM.cod_motivo = HP.COD_MOTIVO
LEFT JOIN GDC_PARCEIRO P ON P.cod_parceiro = C.COD_PARCEIRO_REFERENCIA
LEFT JOIN GDC_SEGMENTO SG ON SG.cod_segmento = P.cod_segmento
LEFT JOIN GDC_CANAL canal ON canal.cod_canal = SG.cod_canal
LEFT JOIN GDC_CANAL_PERFIL perfil ON perfil.cod_canal_perfil = canal.cod_canal_perfil
WHERE   
(C.COD_PROTOCOLO_CONTESTACAO = @COD_PROTOCOLO_CONTESTACAO OR @COD_PROTOCOLO_CONTESTACAO IS NULL)
AND (perfil.cod_canal_perfil = @PERFIL OR @PERFIL IS NULL)
AND (
    @LOGIN IS NULL
    OR (COD_USUARIO_RESPONSAVEL IS NULL OR COD_USUARIO_RESPONSAVEL = '')
    OR (COD_USUARIO_RESPONSAVEL IS NOT NULL AND COD_USUARIO_RESPONSAVEL = (SELECT cod_usuario FROM ADM_USUARIO WHERE Login = @LOGIN))
    OR (SELECT COUNT(*) FROM ADM_USUARIO where sit_libera_pedido = 1 AND Login = @LOGIN) = 1)
AND (@COD_MENU IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (
        SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO 
        WHERE COD_MENU = @COD_MENU AND DT_MUDANCA_FILA IS NULL 
        AND (DATEPART(MONTH,DT_HISTORICO) = @MES OR @MES IS NULL) AND (DATEPART(YEAR,DT_HISTORICO) = @ANO OR @ANO IS NULL) 
    ))
{0}
AND (@PERIODO IS NULL  OR @PERIODO = DSC_PERIODO_PAGAMENTO)
AND (C.COD_TIPO_REMUNERACAO = @COD_TIPO_REMUNERACAO OR @COD_TIPO_REMUNERACAO IS NULL)
AND (@COD_GRUPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_GRUPO_CONTESTACAO = @COD_GRUPO_CONTESTACAO))
AND (@COD_TIPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_TIPO_CONTESTACAO = @COD_TIPO_CONTESTACAO))
AND (@COD_MOTIVO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_MOTIVO_CONTESTACAO = @COD_MOTIVO_CONTESTACAO))
AND (@COD_STATUS IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_STATUS_PROCESSO = @COD_STATUS AND DT_MUDANCA_FILA IS NULL))
AND (@COD_MOTIVO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_MOTIVO = @COD_MOTIVO AND DT_MUDANCA_FILA IS NULL))
AND (@CARREGAR_DIVERGENTES = 1 OR (@CARREGAR_DIVERGENTES = 0 AND C.COD_PROTOCOLO_CONTESTACAO IN (select cod_protocolo_contestacao from CON_CONTESTACAO_ESPELHO_ITEM where sit_divergente = 0)))
    ", string.IsNullOrEmpty(parceirosGestaoCarteira) ? "" : string.Format("AND P.cod_parceiro IN ({0})", parceirosGestaoCarteira)); ;


        if (!string.IsNullOrEmpty(valorPesquisaDinamica) && !string.IsNullOrEmpty(campoPesquisaDinamica))
        {
            sql += string.Format("AND (CAST({0} AS VARCHAR(MAX)) LIKE '%' + @VALOR_PESQUISA_DINAMICA + '%')", campoPesquisaDinamica, valorPesquisaDinamica);
            parametros.Add("@VALOR_PESQUISA_DINAMICA", valorPesquisaDinamica);
        }

        sql += "  ORDER BY SLA DESC ";

        parametros.Add("@LOGIN", usuarioAutenticado ?? (object)DBNull.Value);
        parametros.Add("@PERFIL", perfil ?? (object)DBNull.Value);
        parametros.Add("@COD_PROTOCOLO_CONTESTACAO", codigoProcotolo ?? (object)DBNull.Value);
        parametros.Add("@CARREGAR_DIVERGENTES", carregarDivergentes ? 1 : 0);
        parametros.Add("@COD_MENU", codigoMenu ?? (object)DBNull.Value);
        parametros.Add("@PERIODO", periodo ?? (object)DBNull.Value);
        parametros.Add("@MES", mes ?? (object)DBNull.Value);
        parametros.Add("@ANO", ano ?? (object)DBNull.Value);
        parametros.Add("@COD_STATUS", codigoStatus ?? (object)DBNull.Value);
        parametros.Add("@COD_MOTIVO", codigoMotivo ?? (object)DBNull.Value);
        parametros.Add("@COD_TIPO_REMUNERACAO", codigoTipoRemuneracao ?? (object)DBNull.Value);
        parametros.Add("@COD_GRUPO_CONTESTACAO", codigoGrupoContestacao ?? (object)DBNull.Value);
        parametros.Add("@COD_TIPO_CONTESTACAO", codigoTipoContestacao ?? (object)DBNull.Value);
        parametros.Add("@COD_MOTIVO_CONTESTACAO", codigoMotivoContestacao ?? (object)DBNull.Value);

    }

    using (TFPlusDO db = GetConnection<TFPlusDO>())
    {
        return db.Query(sql, parametros);
    }

}
    
09.04.2016 / 02:29