Postgres SQL创建function函数

function函数基本定义


--定义数组
l_array character varying[];

--变量赋值
test_str varchar;
test_str  := '123'||'456'

--赋值拆分逗号拼接的id,并且赋值到数组
select regexp_split_to_array('1,2,3', ',') into l_array from dual;


--for循环
for i in 1..(array_length(l_array,1)-1)::integer loop 
--sql代码
l_array[i]
end loop;

--函数里输出字符
raise exception 'error--(%)','我是错误';

创建function函数

函数命名规则:fun_xxx()
#示例1
create or replace function test1(name varchar)
returns varchar as $$
begin
 name := name + '-李四';
 --方法参数里面没有out修饰符,得用return返回参数
 return name; #return var:=var+1 这种格式不支持
end; $$
language plpgsql;
select test1()
结果:李四

#示例2
create or replace function test2(out name varchar)
returns varchar as $$
begin
 name := name + '-李四';
 --方法参数里面有out修饰符,不用return返回参数
 --return name; #return var:=var+1 这种格式不支持
end; $$
language plpgsql;
select test1()
结果:李四

#示例3
create or replace function test3(out name varchar,in age integer)
returns varchar as $$
begin
 name := name + '-李四' + age;
 --方法参数里面有out修饰符,不用return返回参数
 --return name; #return var:=var+1 这种格式不支持
end; $$
language plpgsql;
select test1(18)
结果:李四18

--函数里编写if
create or replace function getSXYear(out test varchar(100))
returns varchar as $$
begin
	if 1=1 then
		test := '真';
	else
		test := '假';
	end if;
end; $$
language plpgsql;
select getSXYear();

创建游标

创建游标方式一

create or replace function function_test()  
returns refcursor as --返回一个游标
$body$
declare --定义变量及游标	
	bound_cursor refcursor; --游标	
	v_atid varchar(200);
begin	
	open bound_cursor for execute 'select atid from app_aqxj_task_plan'; --打开游标 并注入要搜索的字段的记录	
	loop  --开始循环		
		fetch bound_cursor into v_step_desc;  --将游标指定的值赋值给变量多选一,隔开		
		if found then			
			raise notice '%',v_step_desc;		
		else
			exit;		
		end if;	
	end loop;  --结束循环	
	close bound_cursor;  --关闭游标	
	//raise notice 'the end of msg...'; --打印消息	
	return bound_cursor; --返回游标exception when others then --抛出异常	
	raise exception 'error--(%)',sqlerrm;  --字符“%”是后面要显示的数据的占位符
end;
$body$
language plpgsql;

创建游标方式二

create or replace function function_test2()
  returns refcursor as --返回类型为游标
$$
declare --变量声明区
  bound_cursor cursor for select atid from app_aqxj_task_plan;
  v_atid varchar(200);
begin
  open bound_cursor;
  loop  --开始循环
        fetch bound_cursor into v_atid;  --将游标指定的值赋值给变量多个以,分开
        if found then --任意判断
			raise notice '%',v_atid;
		else
			exit;
		end if;
    end loop;  --结束循环
    close bound_cursor;  --关闭游标
  return bound_cursor;
end;
$$
language plpgsql;
来做第一个评论吧!~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇