Olá,
Recentemente tentei executar uma procedure sql para criação de um dataset, e o mesmo não é aceito.
Tenho a conexão JDBC para usar meu banco de dados, usando um select simples, o dataset traz as informações, mas quando usado uma proc “exec sp_busca”, ela não me retorna…
Alguém sabe como posso fazer?
Qual banco de dados esta utilizando ? Aqui uso SQL server, ai sempre que preciso rodar procedure;função etc, utilizo select dbo.NOME_FUNCAO
Utilizo o MS SQL SERVER.
Ele me retorna erro…
Caused by: sun.org.mozilla.javascript.internal.WrappedException: Wrapped com.microsoft.sqlserver.jdbc.SQLServerException: A instrução não retornou um conjunto de resultados. (#35)
Estou usando o código da documentação.
https://tdn.totvs.com/display/public/fluig/Datasets+acessando+banco+de+dados+externo
Em "
var
myQuery =
"select * from pessoas"
;
" coloco minha proc, porém, erro.
Oq sua proc faz, ela te retorna valores ou executa algo (insert, update) ?
É um select com joins, declares, tabela variável (insert nela).
Consegue colocar num gist o codigo do seu dataset ? Ou caso ache melhor a gente pode conversar por algum chat pra tentar entender e dps postamos aqui a solução
O script é simplesmente o da documentação, mudando somente a conexão e query:
function createDataset(fields, constraints, sortFields) {
var newDataset = DatasetBuilder.newDataset();
log.info("QUERY: " + myQuery);
var dataSource = “/jdbc/fluig_teste”;
var ic = new javax.naming.InitialContext();
var ds = ic.lookup(dataSource);
var created = false;
var myQuery = “exec sp_busca”;
try {
var conn = ds.getConnection();
var stmt = conn.createStatement();
var rs = stmt.executeQuery(myQuery);
var columnCount = rs.getMetaData().getColumnCount();
while (rs.next()) {
if (!created) {
for (var i = 1; i <= columnCount; i++) {
newDataset.addColumn(rs.getMetaData().getColumnName(i));
}
created = true;
}
var Arr = new Array();
for (var i = 1; i <= columnCount; i++) {
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (null != obj) {
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
} else {
Arr[i - 1] = “null”;
}
}
newDataset.addRow(Arr);
}
} catch (e) {
log.error("ERRO==============> " + e.message);
} finally {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return newDataset;
}
pode ser por chat também.
Eu acho muito esquisita a utilização de uma variável que não foi declarada, na linha log.info("QUERY: " + myQuery);