首页 > 其他分享 >定义存储过程和函数

定义存储过程和函数

时间:2024-04-15 11:49:11浏览次数:29  
标签:存储 定义 23 omm add func multiply integer 函数

定义存储过程和函数
本文出处:https://www.modb.pro/db/222642

学习地址
https://www.modb.pro/course/133

学习目标
学习 openGauss 定义存储过程和函数

课后作业
1.创建带有入参和出参的函数 1,调用函数时使用按参数值传递和命名标记法传参
omm=# create function func_multiply (a integer,b integer) return integer
omm-# as
omm$# begin
omm$# return a * b;
omm$# end ;
omm$# /
CREATE FUNCTION
omm=# call func_multiply(2,3);
func_multiply

         6

(1 row)
omm=# call func_multiply(a => 4,b => 5);
func_multiply

        20

(1 row)
omm=# call func_multiply(a := 3,b := 6);
func_multiply

        18

(1 row)
omm=#

2.创建返回类型为 record 的函数 2,重命名函数 2
omm=# create function func_add_multiply (a integer,out result1 integer,out result2 integer,out result3 integer,out result4 integer)
omm-# returns setof record
omm-# as $$
omm$# begin
omm$# result1 = a + 5;
omm$# result2 = a - 5;
omm$# result3 = a * 5;
omm$# result4 = a / 5;
omm$# return next;
omm$# end;
omm$# $$language plpgsql;
CREATE FUNCTION
omm=# call func_add_multiply(5,1,1,1,1);
result1 | result2 | result3 | result4
---------+---------+---------+---------
10 | 0 | 25 | 1
(1 row)
omm=# call func_add_multiply(100,1,1,1,1);
result1 | result2 | result3 | result4
---------+---------+---------+---------
105 | 95 | 500 | 20
(1 row)
omm=#

3.使用\sf 和系统函数查看函数定义
omm=# \sf func_multiply
CREATE OR REPLACE FUNCTION public.func_multiply(a integer, b integer)
RETURNS integer
LANGUAGE plpgsql
NOT FENCED NOT SHIPPABLE
AS $function$ DECLARE
begin
return a * b;
end $function$;
omm=# \sf func_add_multiply
CREATE OR REPLACE FUNCTION public.func_add_multiply(a integer, OUT result1 integer, OUT result2 integer, OUT result3 integer, OUT result4 integer)
RETURNS SETOF record
LANGUAGE plpgsql
NOT FENCED NOT SHIPPABLE
AS $function$
begin
result1 = a + 5;
result2 = a - 5;
result3 = a * 5;
result4 = a / 5;
return next;
end;
$function$;
omm=#
omm=# \x
Expanded display is on.
omm=# select * from pg_proc where proname='func_multiply';
-[ RECORD 1 ]----+--------------
proname | func_multiply
pronamespace | 2200
proowner | 10
prolang | 11750
procost | 100
prorows | 0
provariadic | 0
protransform | -
proisagg | f
proiswindow | f
prosecdef | f
proleakproof | f
proisstrict | f
proretset | f
provolatile | v
pronargs | 2
pronargdefaults | 0
prorettype | 23
proargtypes | 23 23
proallargtypes |
proargmodes |
proargnames | {a,b}
proargdefaults |
prosrc | DECLARE
| begin
| return a * b;
| end
probin |
proconfig |
proacl |
prodefaultargpos |
fencedmode | f
proshippable | f
propackage | f
prokind | f

omm=# select * from pg_proc where proname='func_add_multiply';
-[ RECORD 1 ]----+------------------------------------
proname | func_add_multiply
pronamespace | 2200
proowner | 10
prolang | 11750
procost | 100
prorows | 1000
provariadic | 0
protransform | -
proisagg | f
proiswindow | f
prosecdef | f
proleakproof | f
proisstrict | f
proretset | t
provolatile | v
pronargs | 1
pronargdefaults | 0
prorettype | 2249
proargtypes | 23
proallargtypes | {23,23,23,23,23}
proargmodes | {i,o,o,o,o}
proargnames | {a,result1,result2,result3,result4}
proargdefaults |
prosrc |
| begin
| result1 = a + 5;
| result2 = a - 5;
| result3 = a * 5;
| result4 = a / 5;
| return next;
| end;
|
probin |
proconfig |
proacl |
prodefaultargpos |
fencedmode | f
proshippable | f
propackage | f
prokind | f

omm=#

4.删除函数
omm=# drop function func_multiply;
DROP FUNCTION
omm=# drop function func_add_multiply;
DROP FUNCTION
omm=#

标签:存储,定义,23,omm,add,func,multiply,integer,函数
From: https://www.cnblogs.com/helloopenGauss/p/18135591

相关文章

  • Feign日志 - 自定义 info级别打印
    背景由于feign,默认只有debug的level,才能打印出日志。不太符合一般项目的loginfolevel的约定。因此决定自定义feign的log打印。目的在infolevel下,可以打印feign日志寻找线索打开openfeign的核心包目录寻找log相关类 feign-1.png通过FeignLoggerfactor......
  • 9个MogDB存储过程示例
    9个MogDB存储过程示例本文出处:https://www.modb.pro/db/400634存储过程是一组结构化的查询和语句,例如控制语句和声明。这里介绍9个在不同情况下很有用的存储过程示例。创建测试表:createtablepublic.test1(idint,namevarchar(10));使用存储过程插入数据CREATEORR......
  • 十大管理每个过程定义以及作用
    一、整体管理1、制定项目章程制定一份正式批准并授权项目经理在项目活动中使用活动资源的文件。明确了项目于组织战略目标之间的直接联系;确立了项目的正式地位;展示了组织对项目的承诺。2、制定项目管理计划组织、准备和协调项目计划的其他组成部分的文件,并把它们整合成一份综合的......
  • 函数式编程思想 VS 可变性理论 20240415
    函数式编程(FunctionalProgramming,FP)是一种编程范式,它将计算视为数学函数的求值,并避免使用程序状态以及易变对象。函数式编程的核心思想包括:不可变性(Immutability):在函数式编程中,数据是不变的。一旦创建了一个数据结构,就不能再改变它。所有的操作都会产生新的数据结构。纯......
  • 函数的参数传递是值传递
    1.基本值,会直接将值传递给函数的参数2.引用值传递,是将引用值地址值传递给函数参数外界定义的a并没有被修改引用地址,说明参数传递进来的是地址值,如果参数是引用传递,那么外界的a应该被修改为a=此时值被改变,是直接操作了引用对象地址指向的内存空间,函数参数传递进......
  • 异步函数
    0.为什么使用异步因为js本身是单线程,如果所有的任务都是同步的,那么一些非常耗时的任务就会严重影响到用户体验1.回调函数constfs=require('fs');functionread(fileName){fs.readFile(fileName,'utf-8',(err,data)=>{if(err){console.log('err'......
  • httprunner 4.x学习 - 06辅助函数(debugtalk)的使用
    前言支持go语言和python语言写辅助函数debugtalk辅助函数在根目录编辑debugtalk.py文件写辅助函数实现自动化生成动态参数。 如下两个int相加和获取登录用用户名函数defsum_two_int(a:int,b:int)->int:returna+b defget_longin_name():retur......
  • 一行return 写一个递归函数! 20240414
    defmake_anonymous_factorial():returnlambdan:1ifn==0elsereduce(lambdax,y:x*y,range(1,n+1))这个函数make_anonymous_factorial的目的是创建并返回一个匿名函数(也称为lambda函数),该匿名函数能够计算一个给定非负整数n的阶乘。下面是对这个函数的详细......
  • Entity Framework 自定义外键关系
    EntityFramework自定义外键关系在EntityFramework中,你可以通过在模型类中使用属性来定义自定义外键关系。以下是一个简单的例子,展示了如何在两个实体之间创建一对一的关联关系:  publicclassUser{publicintUserId{get;set;}publicstringUsername......
  • 函数及指针
    c语言递归函数就是一个函数调用了函数本身要有一个明显结束的条件要有一个结束条件的趋势常用系统函数字符串函数标准库头文件<string.h>strlen(str)返回一个数组的长度(有元素的长度字符数组中的结束标识符不算)接收类型是size_tstrcpy(str,str1)将str1的字符串......