(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-#欢迎分享,转载请注明来源:内存溢出
评论列表(0条)