2015-05-13 17 views
5

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 OturumOturum ÖzellikleriSQLBeyanı Ayırıcı:

gidin: deyim bir ; bölünmüş değildir bu yüzden

+0

SQLFiddle aynı soruna sahiptir, ancak tek tırnak işlevi gövdesi sorunu bile çözmemektedir. – Patrick

+1

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 –

cevap

4

Sen deyimi ayırıcısını değiştirebilirsiniz boş bir dizgeye dönüşemezsiniz, örneğin statü yürütmeye izin veren // olarak değiştirebilirsiniz. nt soruda.