MS SQL Server を使用しています。「alter view VIEWNAME as ([some sql])」などを実行して、ストアド プロシージャ内からビューを変更したいと考えています。
Google が投げかけたいくつかのページでは、これは直接サポートされていない (また関連する alter-table ステートメントもサポートされていない) と主張していますが、次のような構造を使用して回避する方法の例もあります。
declare @sql varchar(max)
select @sql = 'alter view VIEWNAME as ([some sql])'
exec(@sql)
コードをリテラル文字列として記述するのは、SQL であっても少し臭いです。
私の質問:
- これがサポートされていないのはなぜですか? これを sproc から実行することと、スタンドアロンのステートメントとして実行することの違いは何ですか?
exec
リテラル SQL 文字列を ing することによる回避策が機能するのはなぜですか? ステートメントについての私の理解ではexec
、SQL をインラインで実行するだけですが、それは正しくありませんか?- (楽観的ではありません) ストアド プロシージャ内からビューを変更するより良い方法はありますか?