从Oracle DB加载数据时,列值作为子字符串

时间:2019-05-10 12:14:07

标签: oracle go substring

这是我的Oracle表:

Table Name: Employee
----------------------
Emp_Id    Emp_Name

12345     Sussane

54321     Alex

以下SELECT查询在SQL Developer中获得正确的结果:

SELECT Emp_Id,Emp_Name from Employee;

查询结果:

12345     Sussane

54321     Alex

但是当我使用GoLang加载此表时,有时(并非总是如此),我得到的结果如下:

运行1:

1     Sussane

5     Alex

运行2:

12     Sussane

54     Alex

我的代码:

    rows, dbQueryErr:= db.QueryContext(ctx,"SELECT Emp_Id,Emp_Name from Employee")
    if dbQueryErr != nil{
            return nil,dbQueryErr
    }
    defer rows.Close()
    cols, readColErr := rows.Columns()
    if readColErr!= nil{
            rows.Close()
            return nil,readColErr
    }

    for rows.Next() {

            columns := make([]interface{}, len(cols))
            columnPointers := make([]interface{}, len(cols))
            for i, _ := range columns {
                    columnPointers[i] =&columns[i]
            }

            if err := rows.Scan(columnPointers...); err != nil {
                    logger.Println("Main Data Query Scan Err:", err)
                    return nil, err
            }
            m := make(map[string]interface{})
            for i, colname := range cols {
                    val := columnPointers[i].(*interface{})
                    m[colname] = *val
            }
                            var sKeys string=keyColumns[0]
            mapString := make(map[string]string)
            for key,value := range m{
                    strKey := fmt.Sprintf("%v", key)
                    strValue := fmt.Sprintf("%v", value)
                    mapString[strKey] = strValue
            }
            fmt.Println("m--->", m)
    }

注意:在m--->,我得到的结果不正确。

0 个答案:

没有答案