暂无图片
PG里面能创建成功并正常运行的函数 在opengauss里面创建报错 ERROR: It is forbidden to use placeholder and dollar quoting together.
我来答
分享
QIU飞
2021-04-15
PG里面能创建成功并正常运行的函数 在opengauss里面创建报错 ERROR: It is forbidden to use placeholder and dollar quoting together.

PG里面能创建成功并正常运行的函数 在opengauss里面创建报错 ERROR: It is forbidden to use placeholder and dollar quoting together.

大佬们有没遇到这个问题呀?

图片.png

代码如下:

CREATE OR REPLACE FUNCTION substring_index(varchar, varchar, integer)
RETURNS varchar AS $$
  DECLARE
    tokens varchar[];
    length integer ;
    indexnum integer;
  BEGIN
    tokens := pg_catalog.string_to_array($1, $2);
    length := pg_catalog.array_upper(tokens, 1);
    indexnum := length - ($3 * -1) + 1;
    IF $3 >= 0 THEN
      RETURN pg_catalog.array_to_string(tokens[1:$3], $2);
    ELSE
      RETURN pg_catalog.array_to_string(tokens[indexnum:length], $2);
    END IF;
  END;
$$ IMMUTABLE STRICT LANGUAGE PLPGSQL;
复制
我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
伊织鸟

遇见了一样的问题,怀疑是$符号的问题,改成以下试试,期待你的回复


CREATE OR REPLACE FUNCTION substring_index(varchar, varchar, integer)
RETURNS varchar AS $$
DECLARE
tokens varchar[];
length integer ;
indexnum integer;
BEGIN
tokens := pg_catalog.string_to_array($1, $2);
length := pg_catalog.array_upper(tokens, 1);
indexnum := length - ($3 * -1) + 1;
IF $3 >= 0 THEN
RETURN pg_catalog.array_to_string(tokens[1:$3], $2);
ELSE
RETURN pg_catalog.array_to_string(tokens[indexnum:length], $2);
END IF;
END;
$$ language 'sql' ;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
锁钥

如下修改,给中括号的两个参数添加空格,怀疑是两个参数没识别出来当成一个占位符导致语法报错:tokens[indexnum : length]

CREATE OR REPLACE FUNCTION substring_index(varchar, varchar, integer) RETURNS varchar AS $$ DECLARE tokens varchar[]; length integer ; indexnum integer; BEGIN tokens := pg_catalog.string_to_array($1, $2); length := pg_catalog.array_upper(tokens, 1); indexnum := length - ($3 * -1) + 1; IF $3 >= 0 THEN RETURN pg_catalog.array_to_string(tokens[1:$3], $2); ELSE RETURN pg_catalog.array_to_string(tokens[indexnum : length], $2); END IF; END; $$ IMMUTABLE STRICT LANGUAGE PLPGSQL;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
pg_probackup 版本和pg版本的对应关系??
回答 3
在2.4.4开始支持PG13,但是建议直接使用最新的版本,都是向下兼容的
postgresql 修改字段的时候会不会阻塞?
回答 1
这要具体看怎么修改,修改什么属性,比如varchar(1)改varchar(2)一般不会,varchar(1)一般int就会影响写;这里还要区分是阻塞读还是阻塞写。总之这个问题还比较复杂需要具体分析。
opengauss选择版本是选最新版(3.0.0)还是选择次新版本(2.1.0)更稳?
回答 3
“X.1.0"版本定位为预览版(预览版支持时间只有半年),对应的正式版版本号为”(X1).1.0"所以2.1.0版本是3.0.0版本的预览版,3.0.0修复了2.1中的很多问题。尝
postgreSQL 主从每日备份是备份主还是从?
回答 1
1)生产建议使用从库进行备份。数据备份的方式有:pgdump、pgdumpall、pgrman、barman、pgbasebackup等2)日志备份可以通过:从库设置archivemodealways
vacuum之后,表变大了,怎么回事?
回答 1
首先,\dt查看到的表大小包含:表main文件、fsm、vm以及toast等内容,其次vm、fsm文件不是建表时创建的,而是这个表第一次vacuum时创建的。main文件8k、fsm文件24k、vm文
postgresql中union联合查询,怎么给查询到的每条记录加一个字段,表示这条记录来自哪个表?
回答 1
已采纳
就像你说的,查的时候加个字段就是了呗select'tablea'tablename,a.col1,a.col2from tableaaunionallselect'tableb'tablen
pg sql优化问题
回答 1
看起来t2中对briverdivision访问了两次,可以改写sql编程访问一次
openGauss的场景有哪些?
回答 1
常见的应用场景在官方文档《技术白皮书》中有表述:交易型应用大并发、大数据量、以联机事务处理为主的交易型应用,如电商、金融、O2O、电信CRM/计费等,应用可按需选择不同的主备部署模式。物联网数据在工业
opengauss主备架构配合keeplive使用
回答 1
已采纳
更好的架构,使用企业版,比如MogDB。openGauss就是单机版的,主备架构用Keepalived或者pacemaker都可以,没有什么太大风险,两者都是成熟的中间件。
pg中SQL没有过滤条件,在创建索引的时候,还要加个常量吗?
回答 1
我实际测试了MySQL是不需要Oracle这样添加常量也能走索引的。PG可以自己走测试