evitare di perdere una mattina per capire che non si può creare una funzione e usarla nello stesso contesto è una di quelle cose che ti aspetti che un forum ti aiuti a fare, e naturalmente invece....
comunque credo (spero) di aver raggiunto un risultato. Questa è la creazione della funzione:
codice:
use [nomedb]
go
IF OBJECT_ID (N'dbo.totkm', N'FN') IS NOT NULL
DROP FUNCTION dbo.totkm;
GO
CREATE FUNCTION dbo.totkm ( @idtesta int )
RETURNS int
WITH EXECUTE AS CALLER
BEGIN
RETURN (SELECT SUM(IsNull(tbl_tratte.km,0)) FROM tbl_righe LEFT JOIN tbl_tratte ON tbl_righe.IDtratta = tbl_tratte.ID WHERE tbl_righe.IDtesta = @idtesta) ;
END
e così la uso (e poi la distruggo)
codice:
UPDATE tbl_teste SET kmtot = dbo.totkm(tbl_teste.ID)
GO
IF OBJECT_ID (N'dbo.totkm', N'FN') IS NOT NULL
DROP FUNCTION dbo.totkm;
GO