J'utilise SqlServer pour la première fois, et dans chacun de nos scripts de création de la procédure il y a un bloc de code comme ci-dessous pour supprimer la procédure si elle existe déjà:Donner DROP PROCEDURE un paramètre
IF EXISTS (SELECT *
FROM information_schema.routines
WHERE routine_name = 'SomeProcedureName'
AND routine_type = 'PROCEDURE'
BEGIN
DROP PROCEDURE SomeProcedureName
END
//then the procedure definition
pour arrêter de couper et coller ce code boilerplate dans chaque fichier que je voudrais mettre ce code dans sa propre procédure stockée de sorte qu'au lieu les scripts ressemblerait à ceci:
DropIfRequired('SomeProcedureName')
//then the procedure definition
Ma tentative de solution est:
CREATE PROCEDURE DropIfRequired
(
@procedureName varchar
)
AS
IF EXISTS (SELECT * FROM information_schema.routines
WHERE routine_name = @procedureName
AND routine_type = 'PROCEDURE')
BEGIN
DROP PROCEDURE @procedureName
END
Mais j'obtiens alors l'erreur suivante:
Msg 102, Niveau 15, État 1, Procédure deleteProcedure, ligne 10 syntaxe incorrecte près de '@procedureName'.
Des idées comment faire ce que je veux?
Ce [cette réponse] (http://dba.stackexchange.com/q/47186/16776) pour plus de solutions pour ça. – Sam