我从off复制了代码。文档:
let input_thread = thread::spawn(move || {
input_tx.send(Command::Quit);
});
但由于某种原因,它只返回第一行的所有字段而没有其他内容。这是一个错误,还是我做错了?
答案 0 :(得分:5)
您需要使用游标循环遍历SQL查询结果行。
&sql(declare c1 cursor for SELECT *,%ID INTO :tflds()
FROM Sample.Person)
&sql(open c1)
for {
&sql(fetch c1)
quit:SQLCODE'=0
set firstflds=14
for i=0:1:firstflds {
if $Data(tflds(i)) {
write "field ",i," = ",tflds(i),!
}
}
write "===NEXT ROW===",!
}
&sql(close c1)
有关详细信息,请参阅http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_esql#GSQL_esql_cursor
答案 1 :(得分:1)
嵌入式SQL是性能敏感操作的好工具,但如果需要检索多行,确实难以处理。所有这些游标业务都很痛苦。
请考虑使用动态SQL。它有很好的结果集 - 就像界面一样。