DROP function mytest();
CREATE OR REPLACE FUNCTION mytest()
RETURNS TABLE(name text, age int)
AS
$$
SELECT name, age FROM names
$$
LANGUAGE sql;
我在存储过程中看到的大多数示例都返回一行包含一列,并且可以与QueryRow一起使用。这里我使用表作为输出。以上内容返回4行:
mytest
------------
(bob,12)
(fred,18)
(james,22)
(bill,27)
(4 rows)
在Go中,处理元组的惯用方法是什么:
rows, err := db.Query("SELECT mytest()")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var items string
if err = rows.Scan(&items); err != nil {
panic(err)
}
log.Println(items) // items is a string...now what?
}
if err = rows.Err(); err != nil {
panic(err)
}
//打印一些元组:
(bob,12)
(fred,18)
(james,22)
(bill,27)
也许有一个包裹,但我还没有找到它;(
答案 0 :(得分:-1)
您可以尝试PostgreSQL typesafe1 ORM,而不是查询src-d/go-kallax
,deals with tuples。
您可以在此blog post
中看到kalax
- kallax的第一优先级是为数据访问层提供类型安全。
- kallax的另一个目标是确保所有模型首先是Go结构,而不必使用特定于数据库的类型,例如sql.NullInt64。还提供对所有基本Go类型和所有JSON和数组运算符的数组和切片的支持。