2016-09-01 14 views
0

誰かがこの狂気を丁寧に説明できますか?Postgresql - あいまいな列への参照の挿入

INSERT INTO "dbo"."UserProfile" ("FirstName") 
VALUES('John') 
RETURNING "UserProfileId" INTO _UserProfileId; 

は、あいまいな参照エラーをスローし、しかし、これは正しく実行されます。

INSERT INTO "dbo"."UserProfile" ("FirstName") 
VALUES('John') 
RETURNING "dbo"."UserProfile"."UserProfileId" INTO _UserProfileId; 

_UserProfileIdが宣言整数変数です。マニュアルでこの構文の参照を見つけることができませんでした。なぜなら、これはどういう意味でもあいまいなのです。

+0

はplpgsqlが関数定義からこのですか?完全な関数定義とテーブル定義を含むさらに完全なコードスニペットを提供できますか? – redneb

+0

はい、そうです。これは、大規模なplpgsql関数内のスニペットです。 INSERT文だけではありませんが、このエラーは他の関数でも一見ランダムな方法で表示されます。 RETURNS TABLE()で定義された列名と何らかの形で衝突していますか?私は正確な原因を絞り込むことはできません。 –

+0

まあ、私はこれを再現することはできません。最小限の完全な例を提供する必要があります。 – redneb

答えて

1

INおよびOUTパラメータ(RETURNS TABLEの列を含む)は、plpgsql関数の本体のすべてのSQLコマンド内に表示されます。

クエリに同じ名前の列がある場合は、テーブルを修飾して明瞭にする必要があります。あなたの場合、テーブル名はどうなる:

... RETURNING "UserProfile"."UserProfileId" INTO _UserProfileId; 

Details in the manual here.

関連:

関連する問題