Pergunta

Eu estou usando Groovy Sql para buscar os resultados.Esta é a saída do meu Linux.

%isql -U abc -P abc -S support
1> sp_configure 'number of open partitions'
2> go
 Parameter Name                 Default     Memory Used Config Value    Run Value    Unit                 Type
 ------------------------------ ----------- ----------- ------------  ------------ -------------------- ----------
 number of open partitions              500        5201         5000          5000 number               dynamic

(1 row affected)
(return status = 0)
1>

Eu estou usando groovy código

def sql = Sql.newInstance("jdbc:abc:sybase://harley:6011;DatabaseName=support;",dbuname,dbpassword,Driver)
sql.eachRow("sp_configure 'number of open partitions'"){ row ->
        println row.run_value
    }

mas ele me dá

Exception in thread "main" java.sql.SQLSyntaxErrorException: [abc][Sybase JDBC Driver]Invalid column name: run_value

Então, ele diz que não é possível obter o speciied colunas, existe uma maneira que ele pode buscar o resultado e exibição?

Atualização

Eu usei o código abaixo

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
            println row
    }

e ele me dá

[Parameter Name:number of open partitions     , Default:        500, Memory Used:       5201, Config Value:        5000, Run Value:        5000, Unit:number              , Type:dynamic   ]

Como posso obter Run Value?(uma vez que tem um espaço)

row.Run Value não vai trabalhar para garantir

Foi útil?

Solução

Isso funciona?Consultando os meta-dados para o nome da coluna e obter o valor do índice:

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
  (1..row.getMetaData().columnCount).each {
    println "${row.metaData().getColumnName( it )} = ${row[ it ]}"
  }
}

Ou, para obter a coluna diretamente

row.'Run Value'

Outras dicas

Outra alternativa é getAt(int).No seu caso, isso irá retornar o "Executar" Valor de:

row.getAt(-3)

Additioannly para @tim_yates a resposta que eu gostaria de notar que row tem toRowResult() o método.Permite obter uma linha simplesmente como um Mapa.Não há necessidade de ligar getMetadata() se nós só precisamos de nomes de coluna ou tabela de largura.

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
  row.toRowResult().each(){ colName, value ->
    println "${colName} = ${value}"
  }
}

Este código, fazendo absolutamente o mesmo, mas parece muito mais claro

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top