Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.20 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "context"
  5.     "database/sql"
  6.     "log"
  7. )
  8.  
  9. var (
  10.     ctx context.Context
  11.     db  *sql.DB
  12. )
  13.  
  14. func main() {
  15.     age := 27
  16.     q := `
  17. create temp table uid (id bigint); -- Create temp table for queries.
  18. insert into uid
  19. select id from users where age < ?; -- Populate temp table.
  20.  
  21. -- First result set.
  22. select
  23.     users.id, name
  24. from
  25.     users
  26.     join uid on users.id = uid.id
  27. ;
  28.  
  29. -- Second result set.
  30. select
  31.     ur.user, ur.role
  32. from
  33.     user_roles as ur
  34.     join uid on uid.id = ur.user
  35. ;
  36.     `
  37.     rows, err := db.Query(q, age)
  38.     if err != nil {
  39.         log.Fatal(err)
  40.     }
  41.     defer rows.Close()
  42.  
  43.     for rows.Next() {
  44.         var (
  45.             id   int64
  46.             name string
  47.         )
  48.         if err := rows.Scan(&id, &name); err != nil {
  49.             log.Fatal(err)
  50.         }
  51.         log.Printf("id %d name is %s\n", id, name)
  52.     }
  53.     if !rows.NextResultSet() {
  54.         log.Fatalf("expected more result sets: %v", rows.Err())
  55.     }
  56.     var roleMap = map[int64]string{
  57.         1: "user",
  58.         2: "admin",
  59.         3: "gopher",
  60.     }
  61.     for rows.Next() {
  62.         var (
  63.             id   int64
  64.             role int64
  65.         )
  66.         if err := rows.Scan(&id, &role); err != nil {
  67.             log.Fatal(err)
  68.         }
  69.         log.Printf("id %d has role %s\n", id, roleMap[role])
  70.     }
  71.     if err := rows.Err(); err != nil {
  72.         log.Fatal(err)
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement