2009-06-30 13 views
7

Chciałbym podać wynik prostej kwerendy SQL (coś w stylu: select SP_NUMBER from SERVICE_PACK), które uruchamiam wewnątrz skryptu ant (przy użyciu zadania sql) z powrotem do właściwości ant (np. service.pack.number).Jak mogę odczytać wynik zapytania sql do właściwości ant?

Zadanie może zostać wysłane do pliku, ale czy istnieje bardziej bezpośredni sposób?

Odpowiedz

7

Mimo, że wolałby nie tworząc plik, I w końcu poszedł z następującym roztworem:

Zadanie SQL nazywa się następująco

<sql ... print="yes" output="temp.properties" 
     expandProperties="true" showheaders="false" showtrailers="false" > 
     <![CDATA[ 
     select 'current.sp.version=' || NAME from SERVICE_PACK; 
     select 'current.major.version=' || NAME from VERSION; 
     ]]> 
</sql> 

Generowane Właściwości pliku będzie zawierać:

current.sp.version=03 

current.major.version=5 

Następnie wystarczy załadować plik właściwości i go usunąć:

<property file="temp.properties" /> 
<delete file="temp.properties" /> 

<echo message="Current service pack version: ${current.sp.version}" /> 
<echo message="Current major version: ${current.major.version}" /> 

To działa, a wszystko jest tam w scenariuszu mrówki (nawet jeśli nie jest to najładniejsza rzecz na świecie!).

+0

cześć! 'select 'deployment_instruction =' deployment_instruction z Patch_spd gdzie patch_name = '$ {patch_name}'' im działa powyżej zapytania, ale w moim pliku właściwości drukuje tylko pls, pomóż mi 'deployment_instruction =' nic innego – picnic4u

+0

Prześlij zapytanie bezpośrednio do twojego baza danych i sprawdź, czy daje właściwy wynik? – zakvdm

2

Być może zadanie Ant exec jest tutaj bardziej przydatne? Możesz wykonać autonomiczny i uzyskać wynik w nieruchomości za pośrednictwem outputproperty. Będziesz musiał, niestety, wykonać swój SQL w jakiś samodzielny sposób.

Czy warto sprawdzić kod do zadania Ant Sql i zmodyfikować go, aby zaakceptować numer outputproperty? Brzmi to trochę boleśnie, ale myślę, że może to być bardzo prosta modyfikacja, jeśli nie znajdziesz niczego bardziej bezpośredniego.

+0

Dzięki za sugestie, Brian. Trochę jestem zmęczony robieniem zbyt wiele poza scenariuszem mrówki, więc idę z podejściem opisanym w mojej odpowiedzi. – zakvdm

+0

Thx za opinię. Brzmi jak najbardziej pragmatyczne rozwiązanie dla twoich wymagań. –

0

MySQL users- musiałem zmodyfikować kwerendę tak:

SELECT CONCAT('mytable.id=', CAST(ID as CHAR)) from mytable 

bez funkcji Concat, Właśnie wróciłem tekst „1” (reprezentujący mój id) w pliku właściwości. Ponadto, CAST jest potrzebny w systemie MySQL, w przeciwnym razie łączone pole jest zwracane jako BLOB.

Powiązane problemy