我试图从sql语句中提取所有数据,但只能在第一个put语句中撤回第一行数据。所以我要做的是通过$data变量执行一个for循环。for循环不会运行,因为它说变量是一个数组。
orasql crsr $sql
orafetch $crsr -datarray data -indexbyname
puts $data(customer)
foreach value $data {
puts $data(customer)
}发布于 2021-06-02 19:05:53
问题是当您执行foreach value $data时;由于data变量是一个数组,所以不能将其读取为一个简单的值。若要打印数组中的键和值,请执行以下操作:
foreach {key value} [array get data] {
puts "$key => $value"
}array get命令使用数组变量的名称,并从中获取键和值的列表,可以用两个变量的foreach对其进行迭代。( parray命令对此做了一个更复杂的版本;您可以使用parray data代替上面的循环,但是这样就没有真正的处理该行的其他路径了。)
通常您应该知道从SQL查询中返回的列的名称,这样就不需要这样循环了。而且,列的顺序并不重要,但数组中条目的顺序也不重要。(查询结果集中的行顺序很重要,但是orafetch一次只能得到一个行。)
https://stackoverflow.com/questions/67810113
复制相似问题