SORU
31 AĞUSTOS 2008, Pazar


Nasıl PostgreSQL komut dosyası değişkenleri kullanıyor musunuz?

MS SQL Server, benim komut özelleştirilebilir değişkenler kullanmak oluşturun:

DECLARE @somevariable int  
SELECT @somevariable = -1

INSERT INTO foo VALUES ( @somevariable )

Daha sonra çalışma zamanında @somevariable değeri, belirli bir durumda istediğim değerine bağlı olarak değiştireceğim. Komut dosyasının en üstünde olduğu için kolay görmek ve hatırlamak.

Nasıl PostgreSQL ile aynı yapabilirim?

Googling PSQL variables ama sadece kullanılabilir olduğunu ima kalkmışdiğer çizgi komutları içindegerçek SQL değil.

Kendi cevaplarımı Buldum, ve aslında oldukça karmaşık oluyorlar. EDİT: Mesaj eski -^ tür . yeni keşiflerden takip etmek.


Buldum sayfayı bağlantılı kendi cevabımı daha aşağı:

Numarasını değişkenler ek yararlı bir özellik yerine kullanabilirsiniz ("") açılıyor normal SQL ifadeleri içine.

Bunu zaten denedim ve bir sorun var, ama bu benim sorunum sonuçta değişken bir bağı olmadığını gösteriyor.

CEVAP
27 AĞUSTOS 2010, Cuma


İsim değişkenleri örneğin \komut kümesi ile oluşturulmuş

\set myvariable value

... sonra yerine kullanılabilir, örneğin, gibi ...

SELECT * FROM :myvariable.table1;

... veya ...

SELECT * FROM table1 WHERE :myvariable IS NULL;

eğer koşullu bir sorgu dize değeri olarak değişken olarak kullanmak istiyorsanız ... ama ...

SELECT * FROM table1 WHERE column1 = ':myvariable';

... sonra yukarıdaki çalışmayacak gibi değişken kendi içinde tırnak işaretleri dahil etmek gerekir. Bunun yerine gibi değişken tanımlamak için

\set myvariable 'value'

Benim gibi, varolan bir değişkeni bir dize yapmak istediğin bir durum içine çalıştırdığınızda, ancak, işin sırrı buldum ...

\set quoted_myvariable '\'' :myvariable '\''

Şimdi aynı dize tırnaklı ve tırnaksız bir değişken var. Ve böyle bir şey yapabilirsiniz....

INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • JTechTalk

    JTechTalk

    11 Temmuz 2010
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008