Bir PostgreSQL 9.3.4 veritabanı için aşağıdaki fonksiyon tanımı var:PostgreSQL fonksiyon tanımı: unterminated dolar tırnaklı dize
CREATE OR REPLACE FUNCTION update_modified_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
ben sincap (3.5.3 veya 3.6) bu yürütmeye çalıştığınızda
Error: ERROR: unterminated dollar-quoted string at or near "$$
BEGIN
NEW.modified_at = now()"
Position: 77
SQLState: 42601
ErrorCode: 0
Şimdiye kadar şöyle fonksiyon gövdesini sınırlandırmak için bu can be mitigated by using single quotes öğrendim:
CREATE OR REPLACE FUNCTION update_modified_timestamp()
RETURNS TRIGGER AS '
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
' LANGUAGE plpgsql;
, aşağıdaki hatayı alıyorum
Yine de bunun çözülüp çözülemeyeceğini bilmek isterim - Flyway bu betiği çalıştırabileceğinden ve SQuirreL içinde yapılandırılmış olan ayni JDBC sürücüsünü kullanabileceğinden bunun mümkün olması gerektiğini düşünüyorum.
Güncelleme:@a_horse_with_no_name bu hata ama Sincap SQL deyimi ayrıştırır ve veritabanına göndermeden önce parçalara böler nasıl, JDBC sürücüsü ile ilgisi yoktur kaydetti. Böylece kalan soru şudur: SQuirreL bir sorguyu ham/ayrık gönderebilir mi? Ben oldukça araştırdım, bunu yapmanın bir yolunu bulamadım.
rağmen Oturum → Oturum Özellikleri → SQL → Beyanı Ayırıcı:
gidin: deyim bir ;
bölünmüş değildir bu yüzden
SQLFiddle aynı soruna sahiptir, ancak tek tırnak işlevi gövdesi sorunu bile çözmemektedir. – Patrick
Bunun, JDBC sürücüsü ile ilgisi yoktur. Bence Squirrel, $$ arasındaki metnin aslında bir string literal olduğunu ve sadece fonksiyon tanımını ilk '' 'e gönderdiğinin farkında değil. Squirrel, sorguyu veritabanına ekleyemeden bir sorgu gönderebilir mi? Farklı bir sınırlayıcı kullanıyorsanız, SQFiddle'da çalışır: http://sqlfiddle.com/#!15/ce3fa3/2 –