加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL存储过程(函数)的正确语法是什么?

发布时间:2020-12-13 16:01:08 所属栏目:百科 来源:网络整理
导读:我正在尝试在PostgreSQL中编写两种类型的存储过程.从我的理解Postgre只有功能.我想知道是否有人可以查看我的代码并提供指针.另外,我不熟悉是否使用了间距/新的命令行. 第一个函数需要从用户获取输入并将其添加到表中. 假设我们有一个表名为“Car”,其属性为
我正在尝试在PostgreSQL中编写两种类型的存储过程.从我的理解Postgre只有功能.我想知道是否有人可以查看我的代码并提供指针.另外,我不熟悉是否使用了间距/新的命令行.

第一个函数需要从用户获取输入并将其添加到表中.
假设我们有一个表名为“Car”,其属性为“model”和“year”.
这是一个正确的存储功能,可以将新车添加到桌面吗?

CREATE OR REPLACE FUNCTION
    addto_car(model IN Car.model%type,year IN Car.year%type)
RETURNS
    void
AS $$
BEGIN
    INSERT INTO Car VALUES(model,year);
END;
$$LANGUAGE plpgsql; (#Is this correct? I'm using postgresql 9)

———- Work in Progress代码
功能1

CREATE OR REPLACE FUNCTION
    addto_car(In model Car.model%type,IN year Car.year%type)
AS $$
BEGIN
    INSERT INTO Car VALUES(model,year);
END;
$$LANGUAGE plpgsql;

这现在有效! (将值模型和年份插入Car).

解决方法

从 Official Documentation

CREATE [ OR REPLACE ] FUNCTION
    name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [,...] ] )
    [ RETURNS rettype
      | RETURNS TABLE ( column_name column_type [,...] ) ]
  { LANGUAGE lang_name
    | WINDOW
    | IMMUTABLE | STABLE | VOLATILE
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    | COST execution_cost
    | ROWS result_rows
    | SET configuration_parameter { TO value | = value | FROM CURRENT }
    | AS 'definition'
    | AS 'obj_file','link_symbol'
  } ...
    [ WITH ( attribute [,...] ) ]

你会在那里找到你的答案,也许,在这个过程中学习两三个有用的东西.

您可能对RETURNS TABLE构造特别感兴趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读