Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "context"
- "database/sql"
- "log"
- )
- var (
- ctx context.Context
- db *sql.DB
- )
- func main() {
- age := 27
- q := `
- create temp table uid (id bigint); -- Create temp table for queries.
- insert into uid
- select id from users where age < ?; -- Populate temp table.
- -- First result set.
- select
- users.id, name
- from
- users
- join uid on users.id = uid.id
- ;
- -- Second result set.
- select
- ur.user, ur.role
- from
- user_roles as ur
- join uid on uid.id = ur.user
- ;
- `
- rows, err := db.Query(q, age)
- if err != nil {
- log.Fatal(err)
- }
- defer rows.Close()
- for rows.Next() {
- var (
- id int64
- name string
- )
- if err := rows.Scan(&id, &name); err != nil {
- log.Fatal(err)
- }
- log.Printf("id %d name is %s\n", id, name)
- }
- if !rows.NextResultSet() {
- log.Fatalf("expected more result sets: %v", rows.Err())
- }
- var roleMap = map[int64]string{
- 1: "user",
- 2: "admin",
- 3: "gopher",
- }
- for rows.Next() {
- var (
- id int64
- role int64
- )
- if err := rows.Scan(&id, &role); err != nil {
- log.Fatal(err)
- }
- log.Printf("id %d has role %s\n", id, roleMap[role])
- }
- if err := rows.Err(); err != nil {
- log.Fatal(err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement