暂无图片
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


请输入正文
提交
相关推荐
postgreSQL 中表总数290w,查出来15w条数据,花了4秒是不是不太正常?
回答 2
主要是15万条刷屏结束还是15万条count?
大佬们,gauss中的命令空间是什么意思啦?
回答 1
PGNAMESPACE系统表存储名称空间,即存储schema相关的信息。如果开启数据库对象隔离属性,用户只能查看自己有权限访问的schema信息
postgreSQL 12.12版本哪里查到表的上次ddl时间?
回答 2
PG12版本可能没什么比较好的方法。PG13版本后,可以开启trackcommittimestamp,然后通过查询数据字典中数据修改时间去判断或者openGauss/MogDB,他们对pgtables
在PostgresSQL的数值类型中,不精确的数据类型有哪个?
回答 1
已采纳
ACD"real"数据类型是一种浮点数类型,它是不精确的,因为它使用二进制浮点表示法来存储数字。与之不同,"numeric"数据类型是精确的,它以文本形式存储数字,可以表示精确的小数值。"double
data studio
回答 1
有什么问题?
pg中关于dp权限的结果不容易看,该如何正确解读呢?
回答 1
例如:zyjcr/postgres表示postgres用户授予t1表的select权限给zyjc用户。
PG中工具栏怎么锁定?
回答 2
推荐使用sqldeveloper工具
opengauss5.0.0 docker 无法启动
回答 1
已采纳
可能是openGauss安装包中启用了numa导致,可以尝试在虚拟机中运行,或者试用opengausslite
pg_current_wal_lsn显示No function matches the given name and argument是啥问题?
回答 1
你的pg可能是较低的版本,把wal换成xlog,lsn换成location试试。
greenplum集群中mirror混合策略会有什么影响
回答 1
已采纳
在Greenplum数据库中,Spread  Mirror和Grouped  Mirror是两种数据复制策略。Spread  Mirror策
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~