Bagaimana untuk Menyelesaikan Ralat \'Unterminated Dollar-Quoted String\' dalam Fungsi PostgreSQL Menggunakan Goose?

Linda Hamilton
Lepaskan: 2024-11-03 20:45:29
asal
223 orang telah melayarinya

How to Resolve

Ralat Rentetan Petikan Dolar Tidak Ditamatkan Diselesaikan dengan -- Anotasi angsa

Percubaan untuk mencipta fungsi PostgreSQL menggunakan Goose menemui "dolar yang tidak ditamatkan ralat rentetan yang dipetik. Kod fungsi melibatkan binaan gelung, semakan bersyarat dan blok pengecualian terhad, yang memperkenalkan koma bernoktah dalam penyataan.

Penjelasan

Dokumentasi Goose menentukan SQL yang kompleks itu pernyataan yang termasuk koma bertitik mesti ditandakan dengan anotasi khas -- goose StatementBegin dan -- goose StatementEnd. Anotasi ini menghalang Goose daripada mengubah suai SQL dengan cara yang mencetuskan ralat dengan pustaka pangkalan data pq.

Penyelesaian

Untuk menyelesaikan ralat, ubah suai kod fungsi untuk disertakan anotasi seperti berikut:

CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS
-- +goose StatementBegin
$BODY$
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;
END;
-- +goose StatementEnd
$BODY$
LANGUAGE plpgsql;
Salin selepas log masuk

Dengan menganotasi permulaan dan akhir pernyataan kompleks, Goose akan mengendalikan pemprosesan SQL dengan sewajarnya, menghalang perpustakaan pq daripada menghadapi ralat rentetan yang tidak ditamatkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Unterminated Dollar-Quoted String\' dalam Fungsi PostgreSQL Menggunakan Goose?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!