SQLサーバーからpostgresを使用するのは初めてです。「posID」を整数として受け取り、(私が思うに)スキルテーブルから行を返す関数を設定しています。関数の戻りタイプを「スキル」に設定すると、「finalステートメントが返す列が多すぎます」というエラーが発生します。しかし、戻りタイプを「スキル」[](スキルの配列?)に設定すると、「最終ステートメントは正確に1つの列を返す必要があります」というエラーが発生します。
私は何が起こっているのか混乱しています。postgresはそのjobsidがjobsテーブルの主キーであることを「認識」していると思いました(したがって、関数が1行のみを返すことを期待しています)が、主キーの有無にかかわらず同じエラーが発生します-おそらくそれはさらにシンプルなもの。
これが関数のコードです
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;