J'utilise MS SQL Server, et je voudrais modifier une vue depuis une procédure stockée, en exécutant quelque chose comme "alter view VIEWNAME as ([some sql])".Pourquoi SQL Server ne peut-il pas modifier une vue dans une procédure stockée?
Quelques pages lancées par Google affirment que cela ne soit pas directement pris en charge (et ne sont liés alter table de déclarations), mais il y a aussi des exemples de la façon de travailler autour d'elle en utilisant des constructions comme ceci:
declare @sql varchar(max)
select @sql = 'alter view VIEWNAME as ([some sql])'
exec(@sql)
L'écriture de code sous forme de chaînes littérales sent un peu, même pour SQL.
Mes questions:
- Pourquoi est-ce pas pris en charge? Quelle est la différence entre l'exécution d'un sproc et son exécution en tant que déclaration autonome?
- Pourquoi la solution de contournement passe-t-elle par
exec
lorsque la chaîne SQL littérale fonctionne? Ma compréhension de la déclarationexec
est qu'il exécute simplement le SQL en ligne, est-ce incorrect? - (Pas optimiste) Existe-t-il une meilleure façon d'apporter une modification à une vue à partir d'une procédure stockée?
Je suppose que c'est juste pour faciliter l'analyse. Lorsque vous exécutez 'EXEC' il s'exécute comme un lot différent. –
"Facilité d'analyse" semble un peu un flic pour une suite de base de données soi-disant prêt pour l'entreprise! :) Sauf s'il y a une raison pour laquelle il n'est pas possible d'analyser? Cela semble peu probable .. –
Pourquoi voudriez-vous changer une vue dans un SP? (plutôt que de décomposer votre traitement en plusieurs étapes ou d'avoir plus d'une vue par exemple) – MLT