Bonjour,

Soit le script suivant :

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
CREATE PROCEDURE PsTest
AS
BEGIN
	BEGIN TRY
		PRINT 'Avant SELECT'
		SELECT dbo.Fn_FonctionQuiNExsitePas()
		PRINT 'Après SELECT'
	END TRY
	BEGIN CATCH
		PRINT 'Entrée CATCH'
		PRINT 'Erreur: ' + ERROR_MESSAGE()
		PRINT 'Sortie CATCH'
	END CATCH
END
GO
 
EXEC dbo.PsTest
La fonction Fn_FonctionQuiNExsitePas() porte bien son nom.

A l'exécution de la procédure stockée PsTest, j'obtiens la sortie suivante :

Avant SELECT
Msg*4121, Niveau*16, État*1, Procédure*PsTest, Ligne*6
Impossible de trouver la colonne "dbo" la fonction définie par l'utilisateur ou l'agrégat "dbo.Test". Le nom pourrait également être ambigu.
L'erreur étant de niveau 16, le contrôle aurait du être transmis au bloc CATCH, donc j'aurais du voir les "Entrée CATCH" et "Sortie CATCH".

Pourquoi cela se passe-t-il autrement ?