Cześć, ten post jest związany z moim poprzednim: "Nielogiczne działanie IF".

Otóż mam nowy trop.

weźmy pod uwagę dwa kody:

 
create procedure test
as
begin
  update tabela set intValue = dateadd(yy, 70, intValue)
end

i

 
create procedure test
as
begin
  update tabela_ktorej_nie_ma set intValue = dateadd(yy, 70, intValue)
end

A teraz jaki będzie efekt wykonania powyższych kodów.
Otóż, jeśli tabela o nazwie TABELA istnieje, procedura nie zostanie utworzona, a oczom naszym ukaże się błąd:
"Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query."

Jeśli TABELA_KTOREJ_NIE_MA nie istnieje w wybranej bazie danych, procedura zostanie utworzona. Jaki z tego wniosek? Taki, że jeśli tabela istnieje, interpreter najpierw sprawdza, czy można takie polecenie wykonać(niezależnie, czy wcześniej w procedurze są jakieś warunki, czy nie). Jeśli tabela nie istnieje - nie sprawdza.

Teraz moje pytanie brzmi tak. Czy można to zachowanie zmienić w jakiś sposób? Tzn. chcę uzyskać efekt taki, żeby procedura pierwsza(z istniejącą) tabela została utworzona. Już tłumaczę dlaczego. Kiedyś daty w tabeli były zapisywane jako datetime. Od najnowszej wersji jest to UNIX timestamp, czyli po prostu integer. I jeśli użytkownik ma bazę danych w najnowszej wersji(zainstalował najnowszą wersję, potem ją odinstalował, ale zachował bazę), to podczas instalacji ponownie tej samej wersji dostaje błędy. Oczywiście można to obejść na poziomie instalatora i tak robię to teraz, ale chciałbym jednak w skrypcie.