`

postgresSQL 函数的例子

阅读更多
--例子1:
--用函数实现将一个表中插入100条顺序数据  顺序:可以是时间或是序列都可以
CREATE OR REPLACE FUNCTION r_add()
  RETURNS integer AS
$BODY$
    DECLARE
r RECORD;
    BEGIN

FOR r IN 1..100 LOOP
INSERT INTO d_table( d_id, d_name)  VALUES (r, 'aa');
END LOOP;

     return 0;
   END;
   $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION r_add() OWNER TO sqluser;


--例子2:
--在插入的列表中 每第10条记录 的字段中 做一个标记
CREATE OR REPLACE FUNCTION r_update()
  RETURNS integer AS
$BODY$
    DECLARE
_testvalue int := 0;
r RECORD;
sql varchar;
    BEGIN
sql = $$ select d_id,d_name from d_table order by d_id $$;
FOR r IN EXECUTE sql LOOP
_testvalue := _testvalue+1;
if(_testvalue%10=0) then
update d_table set d_name = d_name||'标记' where d_id = r.d_id;
else
continue;
end if;
END LOOP;

     return _testvalue;
   END;
   $BODY$
  LANGUAGE 'plpgsql' V
OLATILE
  COST 100;
ALTER FUNCTION r_update() OWNER TO sqluser;

--例子3:
--将修改过的记录存在一个备份表中 然后删除原来表中标记过的记录
CREATE OR REPLACE FUNCTION r_detele()
  RETURNS integer AS
$BODY$
    DECLARE
    BEGIN
insert into d_table2 select d_id,d_name from d_table where d_name like '%标记%' order by d_id ;
delete from d_table where d_name like '%标记%';
   return null;
   END;
   $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION r_detele() OWNER TO sqluser;

--例子4:
--把三个过程联立起来
--插入100条记录 循环标记每第10条to 1条记录 要求每次标记不同 并按顺序备份到 备份表中同时 清空原表
CREATE TABLE d_table
(
  d_id integer,
  d_name text
)
WITH (
  OIDS=FALSE
);
ALTER TABLE d_table OWNER TO sqluser;

CREATE TABLE d_table2
(
  d_id integer,
  d_name text
)
WITH (
  OIDS=FALSE
);
ALTER TABLE d_table2 OWNER TO sqluser;

-- Function: r_update()

-- DROP FUNCTION r_update();

CREATE OR REPLACE FUNCTION r_all()
  RETURNS integer AS
$BODY$
    DECLARE
i int;
l RECORD;
r RECORD;
n int := 10;
sql varchar;
    BEGIN
         --插入记录
         FOR l IN 1..100 LOOP
INSERT INTO d_table( d_id, d_name)  VALUES (l, 'aa');
END LOOP;
--按照规则标记
sql = $$ select d_id,d_name from d_table order by d_id $$;
--先循环最大整除数
while n > 0 LOOP
        --每次循环需要重新获取结果集
FOR r IN EXECUTE sql LOOP
i := r.d_id;
if(i%n=0) then
        --对一条记录的操作应该在同一个循环中完成
update d_table set d_name = d_name||'被'||n||'整除的标记' where d_id = r.d_id;
insert into d_table2 select d_id,d_name from d_table where d_id = r.d_id;
delete from d_table where d_id = r.d_id;
else
continue;
end if;
end loop;
--循环10次
n := n-1;
END LOOP;
     return null;
   END;
   $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION r_all() OWNER TO sqluser;
分享到:
评论

相关推荐

    PostgreSQL简单函数创建

    自定义函数允许用户根据特定需求扩展数据库的功能,这些函数可以是SQL级别的,也可以是C语言级别的。当SQL级别的函数不能满足复杂计算或性能要求时,我们可以借助C语言编写更底层的函数,以获得更高的执行效率。 ...

    postgre中将任意2进制数转换为等效的16进制数的函数

    综上,虽然PostgreSQL没有内建的二进制到十六进制转换函数,我们可以通过编写自定义的SQL函数来实现这一需求。上述提供的函数`bin2hex`就给出了一种可能的实现方式,尽管它依赖于一个未定义的辅助函数`returnto_hex`...

    pg_get_table_ddl:PostgreSQL PLPGSQL函数,可为给定的schematable生成表DDL

    pg_get_table_ddl PostgreSQL PL / PGSQL函数,它为给定的模式/表生成表...例子 选择* from public.pg_get_table_ddl('myschema','mytable');选择* from public.pg_get_table_ddl('myschema','mytable',False);

    以SQL为主体创建elixir函数

    下面是一个简单的例子,展示了如何在Elixir中创建一个使用SQL的函数: ```elixir defmodule MyApp.Repo do use Ecto.Repo, adapter: Ecto.Adapters.Postgres def get_customers_by_city(city) do query = ...

    用wxWidgets编写的访问PostgreSQL的例子

    在这个例子中,我们创建了一个简单的wxWidgets窗口,包含了按钮和文本框等元素。当用户点击按钮时,`OnButtonClick`函数会被调用,尝试连接到数据库并执行SQL查询。请注意,实际应用中你需要根据实际情况调整连接...

    file_db:将目录和文件元数据(包括文件哈希)加载并维护到postgres数据库中,并通过SQL提供对文件系统的控制

    特征将计算机的文件和目录元数据加载到PostgresSQL中,包括名称,大小,校验和散列以及诸如介质尺寸或长度之类的内容。 智能调度程序可对文件系统进行爬网以进行更改,以使目录数据保持数据库中的最新状态,而不会...

    PostgreSQL窗口查询优化

    一般我们都会用到窗口函数去解决这类问题,同样在pg中也支持窗口函数。 例子: 创建测试表,生成10000个分组,1000万条记录。 bill=# create table tbl(c1 int, c2 int, c3 int); CREATE TABLE bill=# create index ...

    Go-一个使用Golang和PostgreSQL的GraphQL完整例子

    可以使用`sql.Open`函数来创建连接,然后使用`db.Ping()`检查连接是否成功。在处理完请求后,记得关闭连接,以避免资源泄漏。 在服务器设置完成后,你可以使用`http.NewServeMux`创建一个HTTP multiplexer,并注册...

    select也要小心——PostgreSQL security invoker函数带来的安全隐患

    pg中创建函数时可以指定权限检测,有两个可选...我们现在数据库中有两个用户:超级用户postgres和普通用户bill。 接着我们用普通用户创建一个表,并在这个普通用户的表上创建触发器。当超级用户操作这个表,并触发了触

    wasmer-postgres::computer_disk::spider_web:Postgres库用于运行WebAssembly二进制文件

    4. **数据库扩展**: PostgreSQL允许通过扩展来添加新的功能,wasmer-postgres就是这样的扩展,它让PostgreSQL可以执行WASM代码,可能用于实现自定义的存储过程、函数或其他数据库操作。 5. **安全性与隔离**: 使用...

    vim-sql-suggest:自动完成表名和列名的建议

    该插件目前支持mysql和postgres数据库。 插件在行动 用法 该插件提供了一个函数来调用完成表和列,以及一个方便的函数来轻松切换提供建议的数据库。 映射函数 您需要在插入模式下映射完整的函数。 这是一个例子。 ...

    norm:一个不会强制您发表意见SQL构建器。 只是以建设性的方式将SQL粘贴在一起

    SQL对象像函数一样可组合 SQL在代码内部看起来更加自然 绑定跟踪已为您处理 值数组得到妥善处理 norm-sql有什么不同? 无需在javascript中设置架构副本,只需开始编写SQL 易于使用的表达逻辑运算符 易于适应...

    setupLOINC:将LOINC加载到Postgres中的R包

    在导入LOINC数据后,你可以利用Postgres的SQL查询能力进行各种复杂的数据分析。例如,查找特定类型的实验室测试,或者找出使用相同LOINC代码但不同单位的项目。这极大地提升了对LOINC数据的利用效率。 此外,...

    nodepg:试验 NodeJS 和 Postgres

    PostgreSQL,通常称为 Postgres,是一种功能强大的开源数据库管理系统,以其ACID(原子性、一致性、隔离性、持久性)事务支持和SQL标准兼容性而闻名。它支持多种数据类型,如JSON、XML、HSTORE等,使得非结构化数据...

    ppx_rapper:用于在OCaml中编写SQL的语法扩展

    在实际项目中,`ppx_rapper` 通常与像 `ocaml-mysql` 或 `ocaml-postgres` 这样的数据库连接库结合使用,以便于执行 SQL 查询和处理结果集。此外,`ppx_rapper` 还允许用户自定义 SQL 函数,以适应不同的业务需求。 ...

    2-Oleg--jsonpath-china-2019.pdf

    它由Oleg Bartunov贡献,他是自Postgres95以来的Postgres专业人士,并且是莫斯科大学的研究科学家以及PostgreSQL Professional的CEO。 2. PostgreSQL的JSON处理经历了多个版本的进化: - PostgreSQL9.4引入了JSONB...

    knex-postgis:postgis扩展为knex

    Knex-Postgis SQL查询构建器中使用postgis函数的扩展。例子此示例显示扩展生成的sql。 const knex = require ( 'knex' ) ;const knexPostgis = require ( 'knex-postgis' ) ;const db = knex ( { client : 'postgres...

    siuba:Python库,用于将dplyr等语法用于熊猫和SQL

    这些函数的输入可以是pandas DataFrame或SQL连接(当前为postgres, DataFrame或sqlite)。 有关dplyr之类的工具背后的原理的更多信息,请参见本。 有关运行中的siuba的示例,请参见。安装pip install siuba例子...

    PostgreSQL分区表(partitioning)应用实例详解

    官方给出的指导意见是:当表的大小超过了数据库服务器的物理内存大小则应当使用分区表,接下来结合一个例子具体记录一下创建分区表的详细过程。 创建分区表 首先看一下需求,现在有一张日志表,现在需要按表中的操作...

Global site tag (gtag.js) - Google Analytics