【发布时间】:2018-06-08 17:34:16
【问题描述】:
我在 PostgreSQL 中创建了一个函数,该函数假设获取数据并将其输入到表中。第一行数据在表中,但随后出现此错误:
org.postgresql.util.PSQLException: 预期没有结果时返回了结果。
除此之外,我的 java 和函数语法一切正常,导致我的 java 程序停止。 这是我的 postgreSQL 代码:
CREATE OR REPLACE FUNCTION public.populategdelt(globaleventid bigint,day bigint,actor1code character varying,actor1name character varying,actor1countrycode character varying,
actor1knowngroupcode character varying,actor1ethniccode character varying,actor1religion1code character varying,actor1religion2code character varying,actor1type1code character varying,
actor2code character varying,actor2name character varying,actor2countrycode character varying,actor2knowngroupcode character varying,actor2ethniccode character varying,
actor2religion1code character varying,actor2religion2code character varying,actor2type1code character varying,eventcode character varying,eventbasecode character varying,
quadclass bigint,goldsteinscale double precision,nummentions bigint,numsources bigint,avgtone double precision,actor1geo_type bigint,actor1geo_fullname character varying,actor1geo_countrycode character varying,actor1geo_adm1code character varying,actor1geo_adm2code character varying,actor1geo_lat double precision,actor1geo_long double precision,actor2geo_type bigint,actor2geo_fullname character varying,actor2geo_countrycode character varying,actor2geo_adm1code character varying,actor2geo_adm2code character varying,actor2geo_lat double precision,actor2geo_long double precision,actiongeo_type bigint,actiongeo_fullname character varying,actiongeo_countrycode character varying,actiongeo_adm1code character varying,actiongeo_adm2code character varying,actiongeo_lat double precision,actiongeo_long double precision,sourceurl character varying)
RETURNS void
LANGUAGE 'sql'
VOLATILE
PARALLEL UNSAFE
COST 100
AS $BODY$insert into data values ( globaleventid, day, actor1code, actor1name, actor1countrycode, actor1knowngroupcode,
actor1ethniccode, actor1religion1code, actor1religion2code, actor1type1code, actor2code, actor2name, actor2countrycode,
actor2knowngroupcode, actor2ethniccode, actor2religion1code, actor2religion2code, actor2type1code, eventcode, eventbasecode,
quadclass, goldsteinscale, nummentions, numsources, avgtone, actor1geo_type, actor1geo_fullname, actor1geo_countrycode,
actor1geo_adm1code, actor1geo_adm2code, actor1geo_lat, actor1geo_long, actor2geo_type, actor2geo_fullname, actor2geo_countrycode,
actor2geo_adm1code, actor2geo_adm2code, actor2geo_lat, actor2geo_long, actiongeo_type, actiongeo_fullname, actiongeo_countrycode,
actiongeo_adm1Code, actiongeo_adm2code, actiongeo_lat, actiongeo_long, sourceurl);
$BODY$;
我需要不同的退货声明吗?因为我想要它做的是转到下一行数据,但如果它因此错误而停止,则不能。如果 void 不适用于此功能,我应该返回什么?
【问题讨论】:
-
你是怎么调用这个函数的?
-
通过java连接到PostgreSQL
-
我很好奇它是怎么称呼的。代码本身。这可能是罪魁祸首。
-
很确定这个错误来自 JDBC,而不是 Postgres。你是通过
executeUpdate()运行这个吗?如果是这样,请尝试改用execute()。 -
是的。请将您的查询也发布在您的 Java 代码中。
标签: postgresql function