PostgreSQL-存储过程(一)基础篇

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PostgreSQL-存储过程(⼀)基础篇存储过程其实就是函数,由⼀组 sql 语句组成,实现⽐较复杂的数据库操作;
存储过程是存储在数据库服务器上的,⽤户可以像调⽤ sql ⾃带函数⼀样调⽤存储过程
语法解析
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
很容易理解,不多解释
下⾯我对⼀张表进⾏简单操作,逐步递进的介绍存储过程的语法
步骤1-基础版
into 表⽰把结果赋值给后⾯的变量,该变量必须在 declare 提前声明
调⽤存储过程
select mycount3()
步骤2-把 sql 语句赋给变量
create or replace function mycount3()
returns integer as $$
declare
mysql text;
counts integer;
begin
mysql:='select count("CD_ID") from "CDS"';
execute mysql into counts;
return counts;
end;
$$ language plpgsql;
步骤3-带变量,且 sql 语句⽤字符串拼接
create or replace function mycount4(tableName text, columnName text)
returns text as $$
declare
mysql text;
begin
mysql:='select count('
|| quote_ident(columnName)
|| ') from '
|| quote_ident(tableName);
return mysql;
end;
$$ language plpgsql;
1. 函数的参数必须声明类型
2. || 表⽰字符串拼接符号
3. 存储过程中的对象不能直接引⽤变量,要⽤ quote_ident,它的作⽤是为字符串加上双引号
4. 在 sql 语句中,⼤写,全部会变成⼩写,如果想保留⼤写,需要加双引号
调⽤存储过程
select mycount4('CDS', 'CD_ID');
返回
select count("CD_ID") from "CDS"
可以看到,输⼊参数是单引号,经过 quote_ident 后,⾃动变成双引号,保留了⼤写
步骤4-换⼀种拼接⽅式,并且函数体加了 if 判断
create or replace function mycount4(tableName text, columnName text)
returns integer as $$
declare
mysql text;
counts integer;
begin
mysql:='select count("' || $2 || '") from "' || $1 || '" ';
execute mysql into counts using tableName, columnName;
if counts > 100 then
return counts;
else return 1;
end if;
end;
$$ language plpgsql;
1. ⽤ using 调取变量,此时需要⾃⼰加双引号以保留⼤写
2. 112 对应的是函数的参数位置,跟 using 后的顺序⽆关
3. if 后⾯有个 then
4. text 可变长度字符串
5. 每句末尾必须带分号。

相关文档
最新文档