Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat Rentetan Petikan Dolar Tidak Ditamatkan Apabila Mencipta Fungsi PostgreSQL dalam Angsa?
Ralat Rentetan Petikan Dolar Tidak Ditamatkan dalam Angsa: Menyelesaikan Isu Penciptaan Fungsi PostgreSQL
Apabila cuba mencipta fungsi dalam PostgreSQL menggunakan Goose, anda mungkin menghadapi ralat yang berkaitan dengan rentetan petikan dolar yang tidak ditamatkan. Ralat ini biasanya dicetuskan apabila penyataan SQL fungsi mengandungi koma bertitik, yang memecahkan rentetan.
Untuk menyelesaikan isu ini, pengguna Angsa mesti menganotasi pernyataan kompleks ini dengan -- goose StatementBegin dan -- goose StatementEnd. Anotasi ini memisahkan penyata kepada bahagian yang lebih kecil, membolehkan Angsa memprosesnya dengan betul.
Dalam kes khusus anda, kod tersebut mengandungi koma bertitik dalam kenyataan KEMASKINI dan INSERT. Oleh itu, kod beranotasi sepatutnya dipaparkan seperti berikut:
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; -- +goose StatementEnd IF found THEN RETURN; END IF; -- +goose StatementBegin BEGIN INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1); RETURN; EXCEPTION WHEN unique_violation THEN -- +goose StatementEnd END; END LOOP; END; $BODY$ LANGUAGE plpgsql;
Setelah anotasi ini ditambahkan, Goose akan dapat memproses pernyataan SQL dengan betul dan mencipta fungsi tanpa menghadapi ralat rentetan yang tidak ditamatkan. Ingat, jika pernyataan anda mengandungi koma bernoktah terbenam, adalah penting untuk menambah anotasi ini untuk memastikan keserasian dengan Goose dan perpustakaan pq.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Rentetan Petikan Dolar Tidak Ditamatkan Apabila Mencipta Fungsi PostgreSQL dalam Angsa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!