Rentetan Petikan Dolar Tidak Ditamatkan: Menyelesaikan Ralat dengan Titik Titik
Dalam konteks mencipta fungsi PostgreSQL dengan Goose, artikel ini menangani ralat ditemui semasa memproses pernyataan kompleks dalam badan fungsi. Ralat, yang dilaporkan oleh perpustakaan pq, menunjukkan bahawa rentetan petikan dolar kekal tidak ditamatkan.
Untuk menyelesaikan isu ini, ambil perhatian bahawa pernyataan kompleks yang menampilkan koma bertitik memerlukan anotasi menggunakan "-- goose StatementBegin" dan "-- goose Anotasi StatementEnd", mengikut dokumentasi Goose. Anotasi ini membantu Goose dalam mengurus koma bernoktah terbenam dalam pernyataan SQL, menghalang ralat libpq.
Menggunakan anotasi ini pada sampel kod yang disediakan menyelesaikan ralat:
CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS $BODY$ -- +goose StatementBegin BEGIN LOOP UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id; IF found THEN RETURN; END IF; BEGIN INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1); RETURN; EXCEPTION WHEN unique_violation THEN END; END LOOP; -- +goose StatementEnd END; $BODY$ LANGUAGE plpgsql;
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Unterminated Dollar-Quoted String' dalam Fungsi PostgreSQL dengan Goose?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!