OVH Cloud OVH Cloud

Creation de vue avec Schemabinding et fonction

1 réponse
Avatar
Je cherche une solution a la cr=E9ation d'une vue avec=20
utilisation de fonction et l'option schemabinding.=20
Sans schemabinding cela fonctionne ... mais il me faut le=20
schemabinding pour la coh=E9rence du dictionnaire des=20
donn=E9es ( comme par exemple sysdepend )=20

Any idea ?=20


CREATE FUNCTION [dbo].[test] ( @value as int)=20
RETURNS tinyint AS =20
BEGIN=20
return (@value)=20
end=20

create view [dbo].[testview] as=20
select result =3D dbo.test(1)=20


create view [dbo].[testview] with schemabinding as=20
select result =3D dbo.test(1)=20

--Result=20
--Server: Msg 4513, Level 16, State 1, Procedure testview,=20
Line 2
--Cannot schema bind view 'dbo.testview'. 'dbo.test' is=20
not schema bound.

drop view testview =20

create view [dbo].[testview] as=20
select result =3D dbo.test(1)

-- result : The command(s) completed successfully.

1 réponse

Avatar
Patrice
Pour être plus explicite, je suggérais d'utiliser également l'option de
SchemaBinding sur la fonction.

En effet, il me parait logique que la création d'un objet qui doit s'appuyer
sur le dictionnaire des données ne soit possible que si tous les objets
qu'il utilise s'appuient eux aussi sur le dictionnaire des données. C'est ce
que le message d'erreur me semble indiquer.

Donc :
- créer la function avec schemabinding
- créer la vue avec schemabinding

et cela devrait coller à mon avis.

Patrice

--

a écrit dans le message de
news:4c9501c490e8$bf1bf770$
Je cherche une solution a la création d'une vue avec
utilisation de fonction et l'option schemabinding.
Sans schemabinding cela fonctionne ... mais il me faut le
schemabinding pour la cohérence du dictionnaire des
données ( comme par exemple sysdepend )

Any idea ?


CREATE FUNCTION [dbo].[test] ( @value as int)
RETURNS tinyint AS
BEGIN
return (@value)
end

create view [dbo].[testview] as
select result = dbo.test(1)


create view [dbo].[testview] with schemabinding as
select result = dbo.test(1)

--Result
--Server: Msg 4513, Level 16, State 1, Procedure testview,
Line 2
--Cannot schema bind view 'dbo.testview'. 'dbo.test' is
not schema bound.

drop view testview

create view [dbo].[testview] as
select result = dbo.test(1)

-- result : The command(s) completed successfully.