【postgresql】数据库函数返回字符串问题

【postgresql】数据库函数返回字符串问题,第1张

(1)"pg_catalog"."varchar" 字符串

(2)"pg_catalog"."bool" 布尔值

(3)"pg_catalog"."int" 数值

(4)"public"."table" 表

现有一个pgsql递归查询,递归查询父级节点并拼接成字符串,查询语句如下

查询结果为

将该查询语句放在函数中,运行没问题,但是使用函数查询时报错,报错如下:

类型转换问题,需要强制将返回结果转为字符串类型 varchar

将查询修改为

将上传查询放到函数中,可以正常查询。

错误代码中已经提示了使用perform来替代,说明你的select语句,就必须写到一个变量中。

$$

declare v_cmd text

begin

v_cmd='select count(*) from "user" where username=$1 and password=$2'

PERFORM exec_shell(v_cmd)

按照这个去修改,这样就可以了,同时建立一个exec_shell()的函数。

CREATE OR REPLACE FUNCTION exec_shell(character varying)

  RETURNS integer AS

$BODY$

   system($_[0])

   return 1

$BODY$

  LANGUAGE plperlu VOLATILE

  COST 1

1、使用CREATEDATABASE该命令将创建一个数据库PostgreSQL的shell提示符,但你应该有适当的权限来创建数据库。默认情况下,创建新的数据库将通过克隆标准系统数据库template1。语法:CREATEDATABASE语句的基本语法如下:CREATEDATABASEdbname其中dbname是要创建的数据库的名称。例子:下面是一个简单的例子,这将创建testdb在PostgreSQL模式:postgres=#CREATEDATABASEtestdbpostgres-#2、使用createdb的命令PostgreSQL命令行可执行createdb是是SQL命令CREATEDATABASE一个包装器。此命令和SQL命令CREATEDATABASE之间唯一的区别是,前者可以直接在命令行中运行,它允许的注释被添加到数据库中,全部在一个命令。语法:createdb语法如下所示:createdb[option][dbname[description]]参数下表列出了参数及它们的描述。参数名称描述dbnameThenameofadatabasetocreate.descriptionSpecifiesacommenttobeassociatedwiththenewlycreateddatabase.optionscommand-lineargumentswhichcreatedbaccepts.选项下表列出了命令行参数CREATEDB接收:选项描述-DtablespaceSpecifiesthedefaulttablespaceforthedatabase.-eEchothecommandsthatcreatedbgeneratesandsendstotheserver.-EencodingSpecifiesthecharacterencodingschemetobeusedinthisdatabase.-llocaleSpecifiesthelocaletobeusedinthisdatabase.-TtemplateSpecifiesthetemplatedatabasefromwhichtobuildthisdatabase.--helpShowhelpaboutdropdbcommandlinearguments,andexit.-hhostSpecifiesthehostnameofthemachineonwhichtheserverisrunning.-pportSpecifiestheTCPportorthelocalUnixdomainsocketfileextensiononwhichtheserverislisteningforconnections.-UusernameUsernametoconnectas.-wNeverissueapasswordprompt.-WForcecreatedbtopromptforapasswordbeforeconnectingtoadatabase.打开命令提示符,然后去是PostgreSQL安装所在的目录。进入到bin目录,执行下面的命令创建一个数据库。createdb-hlocalhost-p5432-Upostgresstestdbpassword******上面的命令会提示Postgres的默认的PostgreSQL管理用户的密码,以便提供密码和继续创建新的数据库。一旦创建数据库时可以使用上述方法,可以检查它在列表中的数据库使用l即反斜线el命令如下:postgres-#lListofdatabasesName|Owner|Encoding|Collate|Ctype|Accessprivileges-----------+----------+----------+---------+-------+-----------------------postgres|postgres|UTF8|C|C|template0|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestemplate1|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestestdb|postgres|UTF8|C|C|(4rows)postgres-#


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10773586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存