package postgres import ( "encoding/json" "fmt" "github.com/jackc/pgx/v4" ) type Test struct { base } func (t Test) UserAdd(name string) { stCode := -999 sql := `select fn_user_add2($1,$2);` _, err := t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{name, stCode}, []interface{}{&stCode}, func(pgx.QueryFuncRow) error { fmt.Printf("%v", stCode) return nil }) if err != nil { fmt.Printf("QueryFunc error: %v", err) } } type UserListInfo struct { Id int Name string } func (t Test) UserList1() (rs []interface{}, err error) { //var id int32 //var name string //var ct time.Time var one interface{} var rs_ struct { Rs []interface{} } //var a interface{} sql := `select id,name from func_userlist_query();` _, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&one}, func(rows pgx.QueryFuncRow) error { rs_.Rs = append(rs_.Rs, one) return nil }) if err != nil { fmt.Printf("QueryFunc error: %v", err) } data, err := json.Marshal(rs_) println(string(data)) return } func (t Test) UserList2() (rs []interface{}, err error) { //var id int32 //var name string //var ct time.Time usone := UserListInfo{} sql := `select id,name from func_userlist_query();` _, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&usone.Id, &usone.Name}, func(pgx.QueryFuncRow) error { fmt.Printf("%v\n", usone) rs = append(rs, usone) return nil }) if err != nil { fmt.Printf("QueryFunc error: %v", err) } return } func (t Test) UserList() (rs []interface{}, err error) { var id int var name string //var ct time.Time //usone := UserListInfo{} sql := `select id,name from func_userlist_query();` _, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&id, &name}, func(pgx.QueryFuncRow) error { usone := UserListInfo{id, name} fmt.Printf("%v\n", usone) rs = append(rs, usone) return nil }) if err != nil { fmt.Printf("QueryFunc error: %v", err) } return }