Bonjour,
Je dois migrer une application de SQL Server 2000 vers SQL Server 2008. Et je rencontre un problème de mise à jour sur une vue.
La vue est la suivante:
et je fais un Update comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 SELECT dbo.PFUCSEXE.EXENCE, dbo.PFUCSVMB.VMBRPR, CASE WHEN PRONOM IS NULL THEN '** Promoteur non affecté **' ELSE PRONOM END AS PRONOM, CASE WHEN PRODES IS NULL THEN '*****' ELSE PRODES END AS PRODES, CASE WHEN PROTEL IS NULL THEN '*****' ELSE PROTEL END AS PROTEL, CASE WHEN PROFAX IS NULL THEN '*****' ELSE PROFAX END AS PROFAX, dbo.PFUCSCLI.CLICLI, dbo.PFUCSCLI.CLINOM, dbo.PFUCSVMB.VMBVMB, dbo.PFUCSVMB.VMBRGA, dbo.PFUCSVMB.VMBNOM, dbo.PFUCSVMB.VMBISI, dbo.PFUCSEXE.EXEQTE, dbo.PFUCSEXE.EXEBOR, dbo.PFUCSBOR.BORDSA, dbo.PFUCSBOR.BOROPS, dbo.PFUCSBOR.BORSER, dbo.PFUCSVMB.VMBOPR, dbo.PFUCSBOR.BORORI, dbo.PFUCSEXE.EXEMHF, dbo.PFUCSEXE.EXEFRA, dbo.PFUCSEXE.EXEMFC, dbo.PFUCSEXE.EXESEN, dbo.PFUCSEXE.EXECRS, dbo.PFUCSEXE.EXEDHC, dbo.PFUCSEXE.EXETMT, dbo.PFUCSVMB.VMBDIV, dbo.PFUCSEXE.EXEPFS, dbo.PFUCSEXE.EXEMSA, dbo.PFUCSEXE.EXEDSA, dbo.PFUCSEXE.EXERAC, dbo.PFUCSEXE.EXEDTE, dbo.PFUCSEXE.EXEIJG, dbo.PFUCSBOR.BORINT, dbo.PFUCSEXE.EXENJG, dbo.PFUCSBOR.BORTYP, dbo.PFUCSEXE.EXEVUS, dbo.PFUCSEXE.EXETYP, dbo.PFUCSEXE.EXEOPV, dbo.PFUCSEXE.EXECLE, dbo.PFUCSBOR.BORRAC, dbo.PFUCSVMB.VMBLHR, dbo.PFUCSREX.REXRAC, dbo.PFUCSVMB.VMBCOP FROM dbo.PFUCSEXE INNER JOIN dbo.PFUCSVMB ON dbo.PFUCSEXE.EXEVMB = dbo.PFUCSVMB.VMBVMB LEFT OUTER JOIN dbo.PFUCSPRO ON dbo.PFUCSVMB.VMBRPR = dbo.PFUCSPRO.PROPRO INNER JOIN dbo.PFUCSBOR ON dbo.PFUCSEXE.EXEBOR = dbo.PFUCSBOR.BORRAC AND dbo.PFUCSEXE.EXESER = dbo.PFUCSBOR.BORSER INNER JOIN dbo.PFUCSCLI ON dbo.PFUCSBOR.BORCLI = dbo.PFUCSCLI.CLICLI LEFT OUTER JOIN dbo.PFUCSREX ON dbo.PFUCSEXE.EXEVMB = dbo.PFUCSREX.REXRAC WHERE (dbo.PFUCSREX.REXTYP = 'JGB')
si j'exécute cette instruction, je me prends le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UPDATE VUCSCEND SET EXEIJG='1', EXENJG=77271 WHERE EXENCE=0 AND convert(varchar,BORDSA,112)<='2009-08-07' AND convert(varchar,EXEDTE,112)<='2009-08-07' AND BORSER = 'BOM' AND EXETYP = 'NOR' AND EXEVUS = '1' AND EXEIJG = '0'
Msg 4147, Level 15, State 1, Procedure VUCSCEND, Line 20
The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.
Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'VUCSCEND' because of binding errors.
J'utilise déjà des left et des inner join, je ne sais pas quoi faire pour résoudre mon problème?
Des suggestions ?
Merci d'avance ?
Mic
Partager