YEAR(GETDATE()) vs Risultato deterministico

giovedì 08 marzo 2012 - 15.13

jjchuck Profilo | Senior Member

cè un modo veloce o debbo creare una funzione per forza ?

mi serve per un idx in una view

lbenaglia Profilo | Guru

>cè un modo veloce o debbo creare una funzione per forza ?
Guarda che anche la tua UDF sarebbe non deterministica, quindi non puoi farlo.

>mi serve per un idx in una view
Fai la vista senza YEAR() che applicherai alla SELECT che la richiama.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

jjchuck Profilo | Senior Member

scusa ci so arrivato amo

lbenaglia Profilo | Guru

>ti posto 'es que el'
>CREATE VIEW dbo.Esistenze WITH SCHEMABINDING
>AS
>SELECT Codart, Codvar, Esiste AS Esistenza, Codart + Codvar
>+ Coddep AS myKey
>FROM tab
>WHERE ... AND (Anno = YEAR(GETDATE()))
>GO
>CREATE UNIQUE CLUSTERED INDEX idx_Codart ON dbo.Esistenze(myKey);
>
>mica ho capito ?
Eh, non puoi fare quella WHERE se intendi materializzare la vista, dato che la funzione GETDATE() è SEMPRE NON deterministica ed uno dei vincoli per la definizione delle indexed view è che si possono utilizzare ESCLUSIVAMENTE funzioni deterministiche.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

jjchuck Profilo | Senior Member

select tks
from myself
where newbie= jjchuck


GO

lbenaglia Profilo | Guru

>select tks
>from myself
>where newbie= jjchuck
>
>
>GO
EXEC sp_MarkTheAnswerIfUseful;
GO


--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

jjchuck Profilo | Senior Member

imbarazzante ...ma
come se fa?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5