相关疑难解决方法(0)

将记录作为函数参数PL/pgSQL传递

首先,我是pl/pgsql的新手.需要它用于项目.

我坚持这个(简化)问题.

我的db模式有一个到m的关系(作者,书籍,author_books)

现在我想要一个pl/psgsql函数insert_book.(我知道所有作者肯定已经在作者表中,所以我只想传递他们的主键).

这个功能大纲是我的想法.

 create or replace function insert_book(book_to_insert book, authors integer[])
  returns void as $$
begin
    -- insert book into table books
    -- for each author add an entry to author_books table
end;
 $$ language plpgsql;
Run Code Online (Sandbox Code Playgroud)

作为论据我想通过类型书的记录和编写它的作者.但这究竟是如何工作的呢?我用Google搜索了一下,似乎无法弄清楚这一点......

问题1:功能大纲是否"正确"/是否有意义?

问题2:如何将记录簿插入表格书?我是否必须遍历书籍的所有领域(title,isbn,publisher,...)并将它们添加到INSERT INTO语句中,还是有"更智能"的方式?

问题3:如何调用我的函数insert_book?我在这里找到了这个例子(http://dbaspot.com/postgresql/206142-passing-record-function-argument-pl-pgsql.html),但这对我没有帮助.出于测试目的,我使用shell,但稍后我们将使用Java和JDBC.

非常感谢您的帮助.

postgresql types plpgsql common-table-expression sql-insert

17
推荐指数
1
解决办法
1万
查看次数