Bonjour,
Nous avons un petit soucis quand nous créons des SP, si le nom de la table n'est pas valide il accepte de créer la SP.
Il y a moyen d'éviter ça?
Discussion :
Bonjour,
Nous avons un petit soucis quand nous créons des SP, si le nom de la table n'est pas valide il accepte de créer la SP.
Il y a moyen d'éviter ça?
Bonjour,
On peut par défaut créer une procédure stockée en référençant une table qui n'existe pas, étant donné que la compilation est déférée au moment de l'exécution.
Quel est exactement le message d'erreur que vous obtenez ?
@++![]()
Aucun message la SP se crée correctement hélas
Mais bon le jour où j’exécute réellement la celle-ci me dira que la table X n’existe pas.
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 CREATE PROCEDURE Test ( @NO_ADR INT ) AS BEGIN SET NOCOUNT ON; SELECT * FROM Adrese WHERE NO_ADR = @NO_ADR; ENDC'est un peu bête de se rendre compte seulement lors de l'utilisation du programme que le développeur à taper "Adrese" au lieu de "Adresse"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 EXEC @return_value = [dbo].[Test] @NO_ADR = 1 Invalid object name 'Adrese'.
Il n'y aurait pas une solution simple pour éviter ce genre de problème?
Je me vois mal demander à chaque développeurs de tester l’exécute manuellement de chaque SP qu'ils créent ou modifient
J'ai peut-être trouvé une solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select o.type, o.name, ed.referenced_entity_name, ed.is_caller_dependent from sys.sql_expression_dependencies ed join sys.objects o on ed.referencing_id = o.object_id where ed.referenced_id is null
Dans quel schéma se trouve la table Adresse ?
SELECT OBJECT_SCHEMA_NAME(OBJECT_ID('T_EMP'), DB_ID())
@++![]()
Une solution un peu radicale mais qui doit marcher après avoir créer la procédure stockée:
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part EXEC sp_recompile <procedure>
Partager