2017-08-29 9 views
3

で関数を使用したとき、私はpostgresの9.6で、次のSQLを実行しようとしてきました。 syntax error at or near "row":しかし、私はエラーを取得します。どの機能が開始さを作成し、REPLACE行になります。構文エラーpostgresの

あなたがすることを好む場合、私はあまりにもsqlfiddleを作りました:http://sqlfiddle.com/#!17/48a30/1

CREATE TEMPORARY TABLE input (
    id serial, certified boolean 
); 

CREATE TEMPORARY TABLE tests_person (
    id serial, certified boolean 
); 

INSERT INTO input (id, certified) VALUES (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False); 

CREATE OR REPLACE FUNCTION update_record(row input) RETURNS RECORD AS $$ 
    UPDATE "tests_person" 
    SET certified=row.certified 
    WHERE certified=row.certified 
    RETURNING * 
$$ LANGUAGE SQL; 
+0

あなたの目標は、実際には何ですか? –

+0

SQL Serverの!それをする必要はありません! – BobSki

答えて

4

rowが予約語であり、あなたがあなたのパラメータ名として使用することはできません。試してみてください、この代わりに

CREATE OR REPLACE FUNCTION update_record(_input input) RETURNS RECORD AS 
$$ 
    UPDATE tests_person 
    SET certified=_input.certified 
    WHERE certified=_input.certified 
    RETURNING * 
$$ LANGUAGE SQL; 
+0

ありがとうございました!そんなばかげた間違い..今私は少なくとも知っている。 – Jonathan