Ho il codice seguente:Come funziona SET NOEXEC ON?
-- start of code
set noexec off
declare @requiredVersion int
declare @currentVersion int
set @requiredVersion = 5
set @currentVersion = 4
if (@currentVersion < @requiredVersion)
begin
print 'Please update your DB to version 5 before running this script.'
set noexec on
end
go
-- print 'Dummy'
insert into tblFooBar(name) values ('AAA')
go
set noexec off
-- end of code
prega di notare che la tabella "tblfoobar" non esiste nel database. Quando ho eseguito questo codice, il messaggio viene in su:
Please update your DB to version 5 before running this script. Msg 208, Level 16, State 1, Line 1 Invalid object name 'tblFooBar'.
mi aspettavo che la creazione di noexec su ON non può dare la parte "Msg 208" del messaggio.
Quindi di nuovo "imposta noexec on" compila il codice, non lo esegue. Cercare di inserire qualcosa in una tabella che non esiste è un errore in fase di compilazione - sto indovinando. Se questo è il caso, allora dovrebbe comparire l'errore "oggetto mancante".
Ora lascia che ti dica lo strano comportamento che ho osservato. Se rimuovo il commento della linea "- Stampa 'fittizio'"
-- start of code
set noexec off
declare @requiredVersion int
declare @currentVersion int
set @requiredVersion = 5
set @currentVersion = 4
if (@currentVersion < @requiredVersion)
begin
print 'Please update your DB to version 5 before running this script.'
set noexec on
end
go
print 'Dummy'
insert into tblFooBar(name) values ('AAA')
go
ed eseguire il codice, ho solo il seguente messaggio.
Prima di eseguire questo script, aggiornare il DB alla versione 5.
Questa volta non ci sono messaggi sulla tabella mancante.
Qualcuno può spiegarmi questo comportamento? Grazie.
Giusto per essere sicuri che siamo sulla stessa pagina: questo è per SQL Server? quale versione? –
Mi dispiace, avrei dovuto dirlo. Ho provato questo codice utilizzando MS SQL 2000. – ahmjt
Sto vedendo lo stesso comportamento in SQL 2005 –