Strano comportamento di SQL Server (2000)

Use pubs

create procedure Rotta as
begin
            select distinct ColonnaCheNonEsiste from authors a
            inner join dbo.#gino g on AliasCheNonesiste.au_id = g.au_id
end

Ora non so quale sia il comportamento di SQL2005 (ce l'ho su un altro PC) ma questa SP viene compilata correttamente. Posso capire che le veriche sintattiche sulla riga blu, che referenziano una tabella temporanea, non siano fatte (e quindi che passi AliasCheNonEsiste), ma almeno la prima parte (ColonnaCheNonEsiste) secondo me dovrebbe essere controllata...

 Edit delle sette di sera:

Dopo aver letto i commenti qualche dettaglio su cosa intendo dire:

1) Se nella creazione della SP sopra commentate la riga in azzurro col cavolo che SQL vi passa la compilazione. Dice che ColonnaCheNonEsiste non esiste e non va avanti. Il comportamento che a me non piace è che perchè nella SP introduco UN riferimento ad una tabella temporanea praticamente non mi viene fatto più un check a parti che invece rimangono controllabili. Quindi in realtà il comportamento del check sintattico dipende dalla struttura della SP stessa, cosa comprensibile, ma solo fino ad un certo punto

2) Se volete un altro esempio di comportamento incoerente di SQL 2000 potete provate a creare una View che referenzi una Function che non esiste. La view non c'è modo di crearla. Quindi, anche in questo caso, delayed poco (in Oracle esiste l'opzione Create Force View che serve proprio a questo). E' un problema banale, se non fosse che il tool che uso per generare il DB si ostina a creare prima le view e poi le function

 

 

posted @ giovedì 1 dicembre 2005 16:34

Print

Comments on this entry:

# re: Strano comportamento di SQL Server (2000)

Left by Davide Mauri at 01/12/2005 19:44
Gravatar
Ciao Massimo

quello che hai descritto è il comportamente normale di SQL Server (qualsiasi edizione dalla 7 in su...ossia quelle di cui ho memoria...la 6.5 non me lo ricordo...), che viene chiamato Delayed Name Resolution.

In pratica l'esistenza degli oggetti non viene controllata quando la stored procedure viene eseguita e non viene creata.

# re: Strano comportamento di SQL Server (2000)

Left by Davide Mauri at 01/12/2005 19:45
Gravatar
ehmmm..l'ultima frase è da correggere :-):

In pratica l'esistenza degli oggetti non viene controllata quando la stored procedure viene eseguita e non quando viene creata.

# re: Strano comportamento di SQL Server (2000)

Left by Davide Mauri at 01/12/2005 19:46
Gravatar
Copia-e-incolla dimmmmmmmm@#@@!!#a

La frase corretta è:

In pratica l'esistenza degli oggetti viene controllata quando la stored procedure viene eseguita e non quando viene creata.
Comments have been closed on this topic.