(sqlstr string, conn *sql.DB)
| 11 | ) |
| 12 | |
| 13 | func OracleCMD(sqlstr string, conn *sql.DB) ([]map[string]interface{}, error) { |
| 14 | rows, err := conn.QueryContext(context.Background(), fmt.Sprintf("%s", sqlstr)) |
| 15 | if err != nil { |
| 16 | Err(err) |
| 17 | return nil, nil |
| 18 | } |
| 19 | defer rows.Close() |
| 20 | cols, err := rows.Columns() |
| 21 | if err != nil { |
| 22 | Err(err) |
| 23 | } |
| 24 | resultSet := make([]map[string]interface{}, 0) |
| 25 | for rows.Next() { |
| 26 | row := make([]interface{}, len(cols)) |
| 27 | rowPtrs := make([]interface{}, len(cols)) |
| 28 | for i := range row { |
| 29 | rowPtrs[i] = &row[i] |
| 30 | } |
| 31 | if err := rows.Scan(rowPtrs...); err != nil { |
| 32 | log.Fatal(err) |
| 33 | } |
| 34 | entry := make(map[string]interface{}) |
| 35 | for i, colName := range cols { |
| 36 | val := row[i] |
| 37 | b, ok := val.([]byte) |
| 38 | if ok { |
| 39 | entry[colName] = string(b) |
| 40 | } else { |
| 41 | entry[colName] = val |
| 42 | } |
| 43 | } |
| 44 | resultSet = append(resultSet, entry) |
| 45 | } |
| 46 | return resultSet, err |
| 47 | } |
| 48 | |
| 49 | // 循环执行sql语句 |
| 50 | func loopOracleCMD(conn *sql.DB) { |
no test coverage detected