none
problema de select com procedure RRS feed

  • Pergunta

  • Ola pessoa, tenho a seguinte estrutura :

      var sessao = db.pr_ixxx_sessao_cliente(2, login, senha, null, null, null, null, null, null, null);

                     foreach (var contador in sessao)
                     {
                         objcliente.clienteID = int.Parse(contador.is_cliente.ToString());
                         objcliente.estoqueEnsaios = int.Parse(contador.et_ensaio.ToString());
                         objcliente.Estoque24horas = int.Parse(contador.et_24h.ToString());
                         objcliente.EstoqueCam = int.Parse(contador.et_cam.ToString());

                         objcliente.login = contador.nm_email.ToString();
                     }

    No caso estou obtendo um erro no foreach

    dizendo que nao pode operar com parametros do tipo objeto, pois nao tem publica definicao para get enumerator,

    no caso estou retornando uma linha da tabela, alguem saberia me ajudar ?

    quarta-feira, 14 de março de 2012 15:14

Respostas

  • Olá Leandro,

    Parece que sua procedure retorna apena um item, ao invés de uma lista de clientes (mesmo pelo nome percebe-se isso).

    tente desta forma:

    var contador = db.pr_ixxx_sessao_cliente(2, login, senha, null, null, null, null, null, null, null);
    
    objcliente.clienteID = int.Parse(contador.is_cliente.ToString());
    objcliente.estoqueEnsaios = int.Parse(contador.et_ensaio.ToString());
    objcliente.Estoque24horas = int.Parse(contador.et_24h.ToString());
    objcliente.EstoqueCam = int.Parse(contador.et_cam.ToString());
    objcliente.login = contador.nm_email.ToString();
                     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quarta-feira, 14 de março de 2012 19:40
    Moderador
  • Olá Leandro,

    Parece realmente que os dados retornados pelo banco de dados não se encaixam com nenhuma das classes mapeadas pelo EF (ou LINQ to SQL, não sei qual vc esta utilizando)

    Diante desse cenário vc tem duas possibilidades:

    - Criar uma classe que se encaixe com o formato dos dados retornados pelo banco de dados

    - Conversar com seu DBA sobre a possibilidade de adequar os dados retornados pela stored procedure

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 15 de março de 2012 01:38
    Moderador

Todas as Respostas

  • Olá Leandro,

    Parece que sua procedure retorna apena um item, ao invés de uma lista de clientes (mesmo pelo nome percebe-se isso).

    tente desta forma:

    var contador = db.pr_ixxx_sessao_cliente(2, login, senha, null, null, null, null, null, null, null);
    
    objcliente.clienteID = int.Parse(contador.is_cliente.ToString());
    objcliente.estoqueEnsaios = int.Parse(contador.et_ensaio.ToString());
    objcliente.Estoque24horas = int.Parse(contador.et_24h.ToString());
    objcliente.EstoqueCam = int.Parse(contador.et_cam.ToString());
    objcliente.login = contador.nm_email.ToString();
                     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quarta-feira, 14 de março de 2012 19:40
    Moderador
  • Ola novamente Fernando

    Então nesse caso estou criando a sessao do usuario, essa procedure faz um insert no banco de dados e posteriormente retorna atraves de um select as informações dele, na maneira passada ele nao esta reconhecendo os campos do banco :

    contador.is_cliente.ToString())

    Um detalhe que percebi na estrutura que a procedure ao ser inserida mostra uma mensagem de alerta :

    Unknown Return type

    The return types for the following stored procedures could not be detected, pesquisei a respeito do erro e percebi que a falha é devido a sua estrutura interna, mas testei a proc no banco e ela esta funcionando perfeitamente, será que devo pedir ao meu dba alterar a estrutura da proc ?

    quarta-feira, 14 de março de 2012 20:27
  • Olá Leandro,

    Parece realmente que os dados retornados pelo banco de dados não se encaixam com nenhuma das classes mapeadas pelo EF (ou LINQ to SQL, não sei qual vc esta utilizando)

    Diante desse cenário vc tem duas possibilidades:

    - Criar uma classe que se encaixe com o formato dos dados retornados pelo banco de dados

    - Conversar com seu DBA sobre a possibilidade de adequar os dados retornados pela stored procedure

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 15 de março de 2012 01:38
    Moderador