我是 SQL Server 的 postgres 新手。我正在设置一个将“posID”作为整数的函数,并且(我认为)从技能表中返回行。如果我将函数的返回类型设置为“技能”,则会出现错误:“最终语句返回的列太多。” 但是,如果我将返回类型设置为“技能”[](技能数组?),那么我会收到错误“最终语句必须只返回一列”。
我对正在发生的事情感到困惑。我认为 postgres 正在“看到”该作业 id 是作业表上的主键并且(因此希望该函数仅返回一行)但是无论是否使用主键我都会遇到相同的错误-所以也许是更简单的事情。
这是函数中的代码
select * from "Skills" inner join "Jobs" on "Skills"."SkillID"="Jobs"."SkillID" where "JobID"="posID"
这是工作表(有时没有 PK)
CREATE TABLE "Jobs"
(
"JobID" integer NOT NULL,
"SkillID" integer,
"Title" character varying[],
CONSTRAINT "PK" PRIMARY KEY ("JobID")
)
这是技能表
CREATE TABLE "Skills"
(
"SkillName" character varying(50),
"SkillID" integer
)
这是函数(使用不同的代码。显然它不会接受上面的代码)
CREATE OR REPLACE FUNCTION "skillsForJob"("posID" integer)
RETURNS "Skills" AS
'select * from "Skills"'
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION "skillsForJob"(integer)
OWNER TO postgres;