Go无法从MS SQL 2014读取最后一个nvarchar(max)值

I have the following query:

SELECT ... ,
    grade as [grade],
    grade as [grade2]
    FROM dbo.[qc_runs] r

    JOIN ...
WHERE ...

I send it to MS SQL Server 2014 from my Go code and want to get back data (I am using github.com/denisenkom/go-mssqldb driver). However, I can read first grade value (type nvarchar(max)), but second one arrives empty! These are the same table fields, just duplicated. If I delete first grade value from query and leave just one, it will still arrive empty! The column is described as following:

[grade] [nvarchar](max) NULL,

SQL Management Studio executes this query just fine, both grade values are not empty, but Go code doesn't!

UPDATE #1 Go code:

evaluations, err := db.Query("EXEC qa.dbo.sp_get_evaluation_list ?", uid)
if err != nil {
    if err == sql.ErrNoRows {
        return list, nil
    }
    return list, err
}

// Get column names
colNames, err := evaluations.Columns()
if err != nil {
    log.Logf("Failed to get columns: %v", err)
    return list, err
}

// Result is your slice string.
readCols := make([]interface{}, len(colNames))

// Read data
for evaluations.Next() {

    writeCols := make([]string, len(colNames))
    for i := range writeCols {
        readCols[i] = &writeCols[i]
    }

    evaluations.Scan(readCols...)

    for i := range writeCols {
        fmt.Println(colNames[i], ": ", writeCols[i])
    }
    ...
}

Output:

...
grade :  <some text from DB>
grade2 :  

Problem solved, evaluations.Scan(readCols...) returned error err sql: Scan error on column index 3: unsupported Scan, storing driver.Value type <nil> into type *string, and left the rest of array blank

I'm not a go programmer. But you need to name those fields differently. How could your code possible discern between the first and second [grade]?

SELECT ... ,
    grade as [grade],
    grade as [grade2]
    FROM dbo.[qc_runs] r

    JOIN ...
WHERE ...

Given that you're getting an empty value on the second read, I suspect that the go driver (and the data reader you're using from it) is one-way only.