暂无图片
oracle存储过程转PG,record兼容问题
我来答
分享
一一
2021-08-20
oracle存储过程转PG,record兼容问题

oracle部分存储过程代码

type dev_record is record(
id varchar2(32),
name varchar2(64));
type t_dev_type is table of dev_record index by binary_integer;
v_temp_type t_dev_type;
v_temp_record_type t_dev_type;
begin
if xxx then
select ‘1’,‘aaa’ into v_temp_record_type from dual;
v_temp_type(v_temp_type.count+1):=v_temp_record_type;
end if;
if yyy then
select ‘2’,‘bbb’ into v_temp_record_type from dual;
v_temp_type(v_temp_type.count+1):=v_temp_record_type;
end if;
for i in 1 … _temp_type.count loop
update tabname set col=‘xxx’ where id=v_temp_type(i).id;

end loop;
end;

转换为pg函数时有两个问题
1.PG的record如何追加?
2.多行记录的record如何一行一行取出来用?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
海潮

pg function 可以这样写:

CREATE OR REPLACE FUNCTION fun( parm CHARACTER VARYING)
    RETURNS SETOF RECORD AS
$BODY$

DECLARE
  i_rec  RECORD;
BEGIN
  FOR i_rec IN (select xxxx from t1) LOOP
     RETURN NEXT i_rec;
  END LOOP;
  RETURN;
END;

$BODY$;

复制

BTW,这个问题描述及例子代码写的让人不想看

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
墨天轮福利君
升级问题到: 紧急故障
暂无图片 评论
暂无图片 有用 0
打赏 0
彭冲

1.PG的record如何追加?
回复:PG里record类型可以直接使用,不需要定义type。record类型如果要返回一个集合,函数的返回值使用returns setof record,结构体里return next record。

2.多行记录的record如何一行一行取出来用?
回复:使用for循环遍历处理。

详细使用请参考plpgsql服务器编程http://postgres.cn/docs/12/plpgsql.html

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 里创建的多个用户, 应用数据源配置的是各自的用户, 程序是一样的, 发现有串库的情况发生, A程序应该写到A用户 , 现在写到B用户下面了,怎么解决?
回答 2
已采纳
检查A用户的权限,如果权限正常,不会写到B用户的。1、查询用户有哪些角色:selectfromdbaroleprivswheregrantee'&username';2、查询角色包含哪些权限:
postges主从,主库中截断表会卡住耗时很久
回答 1
启用半同步复制
缺少oci.dll文件
回答 4
oci版本不对
关于Oracle定时器执行问题的疑问,最近总出现定时器运行异常的情况。在查看定时器的时候发现很多定时器的total_time大的过分。
回答 1
已采纳
这个时间是总时间。如果第一次没执行完第二次到点就再次执行就有问题。所以要控制执行周期。一般来说存储过程要高效,几秒完成。不要执行几个小时的那种。这都是对数据库巨大的压力。
sde数据库无法导入栅格数据,报出error:999999错误,提示复制栅格数据集错误。
回答 1
可以尝试以下几种方式:1、如果要素类中存在空几何、短线段、自相交和其他几何问题,则可能会导致此错误。请运行修复几何以修复任何几何问题。2、请检查您尝试用于创建输出的名称。地理数据库中不支持非字母数字字
PostgreSQL 传入变量
回答 2
已采纳
可以使用\gexec特性,例如:select‘selectpgrelationfilepath(’’’||relname||’’’);’frompgstatusertables;\gexec
Oracle 表新增字段索引,如何评估所需要空间大小?
回答 1
这个其实很简单啊。索引保存了。rowid的一部分,和字段本身。所以可以根据字段大小和条数来评估
EXP/IMP和EXPDB/IMPDB导出导入的时候,需要先建表空间和用户吗?
回答 2
使用impdp如果没有用户会自动创建一个用户,但没有表空间则会报错,除非remaptablespace;REMAPTABLESPACE:Tablespaceobjectsareremappedtoan
Oracle 11GR2 RAC下装库的DBCA.RSP 样本
回答 1
已采纳
主要内容如下:[GENERAL]RESPONSEFILEVERSION"11.2.0"OPERATIONTYPE"createDatabase"[CREATEDATABASE]GDBNAME"test
oracle不安装透明网关的情况下,能不能直接用hs和odbc去配置异构数据库的db link?
回答 1
在Oracle不安装透明网关的情况下,直接使用HS(HeterogeneousServices)和ODBC去配置异构数据库的DBLink是有可能的,但具体实现方式依赖于Oracle提供的异构服务组件以