Advertisement
Guest User

Untitled

a guest
Mar 11th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "database/sql"
  5. "fmt"
  6.  
  7. _ "github.com/lib/pq"
  8. )
  9.  
  10. func main() {
  11. defer func() {
  12. err := recover()
  13. if err != nil {
  14. fmt.Println(err)
  15. }
  16. }()
  17. db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=p4ssw0rd dbname=postgres sslmode=disable")
  18. if err != nil {
  19. panic(err)
  20. }
  21. defer db.Close()
  22. _, err = db.Exec("DROP TABLE IF EXISTS tbl1")
  23. if err != nil {
  24. panic(err)
  25. }
  26. _, err = db.Exec(`
  27. CREATE TABLE tbl1(
  28. id SERIAL,
  29. fld1 TEXT,
  30. PRIMARY KEY (id)
  31. )
  32. `)
  33. if err != nil {
  34. panic(err)
  35. }
  36. _, err = db.Exec("INSERT INTO tbl1(fld1) VALUES ('abc'), ('def'), ('ghi'), ('jkl')")
  37. if err != nil {
  38. panic(err)
  39. }
  40. _, err = db.Exec(`
  41. CREATE OR REPLACE PROCEDURE proc1(INT, INOUT id INT, INOUT fld1 TEXT)
  42. AS $$
  43. BEGIN
  44. SELECT * INTO id, fld1 FROM tbl1 WHERE tbl1.id = $1;
  45. END;
  46. $$ LANGUAGE plpgsql;
  47. `)
  48. if err != nil {
  49. panic(err)
  50. }
  51. type Tbl1 struct {
  52. Id int
  53. Fld1 string
  54. }
  55. var rslt Tbl1
  56. id := 4
  57. err = db.QueryRow("CALL proc1($1, 0, '')", id).Scan(&rslt.Id, &rslt.Fld1)
  58. if err != nil {
  59. panic(err)
  60. }
  61. fmt.Printf("%v\n", rslt)
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement