Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "database/sql"
- "fmt"
- _ "github.com/lib/pq"
- )
- func main() {
- defer func() {
- err := recover()
- if err != nil {
- fmt.Println(err)
- }
- }()
- db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=p4ssw0rd dbname=postgres sslmode=disable")
- if err != nil {
- panic(err)
- }
- defer db.Close()
- _, err = db.Exec("DROP TABLE IF EXISTS tbl1")
- if err != nil {
- panic(err)
- }
- _, err = db.Exec(`
- CREATE TABLE tbl1(
- id SERIAL,
- fld1 TEXT,
- PRIMARY KEY (id)
- )
- `)
- if err != nil {
- panic(err)
- }
- _, err = db.Exec("INSERT INTO tbl1(fld1) VALUES ('abc'), ('def'), ('ghi'), ('jkl')")
- if err != nil {
- panic(err)
- }
- _, err = db.Exec(`
- CREATE OR REPLACE PROCEDURE proc1(INT, INOUT id INT, INOUT fld1 TEXT)
- AS $$
- BEGIN
- SELECT * INTO id, fld1 FROM tbl1 WHERE tbl1.id = $1;
- END;
- $$ LANGUAGE plpgsql;
- `)
- if err != nil {
- panic(err)
- }
- type Tbl1 struct {
- Id int
- Fld1 string
- }
- var rslt Tbl1
- id := 4
- err = db.QueryRow("CALL proc1($1, 0, '')", id).Scan(&rslt.Id, &rslt.Fld1)
- if err != nil {
- panic(err)
- }
- fmt.Printf("%v\n", rslt)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement