<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>存储过程 on 老张开工了</title>
    <link>/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/</link>
    <description>Recent content in 存储过程 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 21 Feb 2025 10:00:00 +0800</lastBuildDate>
    <atom:link href="/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>存储过程与函数</title>
      <link>/posts/2025/02/stored-procedures-and-functions/</link>
      <pubDate>Fri, 21 Feb 2025 10:00:00 +0800</pubDate>
      <guid>/posts/2025/02/stored-procedures-and-functions/</guid>
      <description>存储过程和函数允许你在数据库内部执行业务逻辑——数据不离开数据库，减少网络往返，对特定场景有显著性能优势。&#xA;函数 vs 存储过程 PostgreSQL 11 之前只有函数（必须返回值），11 之后引入了真正的存储过程（可以不返回值）。&#xA;特性 函数（FUNCTION） 存储过程（PROCEDURE） 返回值 必须返回（可 VOID） 可不返回 事务控制 不支持 BEGIN/COMMIT 内部 支持 SELECT 调用 ✅ SELECT func() ❌ CALL 调用 ❌ ✅ CALL proc() 参数模式 IN / OUT / INOUT IN / INOUT 创建函数 CREATE OR REPLACE FUNCTION func_name(param1 TYPE, param2 TYPE DEFAULT default_value) RETURNS return_type LANGUAGE plpgsql AS $$ BEGIN -- 函数体 RETURN result; END; $$; 标量函数 -- 最简单的函数：计算折扣价格 CREATE OR REPLACE FUNCTION calc_discount_price( p_price NUMERIC, p_discount NUMERIC DEFAULT 0.</description>
    </item>
  </channel>
</rss>
