*動的 SQL: SQL Server デバッグにおける SELECT EXCEPT の回避策**
SELECT *
は実稼働コードでは通常推奨されませんが、デバッグ中に役立つ場合があります。 ただし、SQL Server には直接の "SELECT * EXCEPT" 句がありません。 この制限は、動的 SQL を使用して克服できます。
MY_Table
テーブルから、「description」列を除くすべての列を取得したいとします。 動的 SQL を使用してこれを行う方法は次のとおりです:
<code class="language-sql">DECLARE @sql VARCHAR(8000), @table_id INT, @col_id INT; SET @sql = 'SELECT '; SELECT @table_id = id FROM sysobjects WHERE name = 'MY_Table'; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND name <> 'description'; WHILE (@col_id IS NOT NULL) BEGIN SELECT @sql = @sql + name FROM syscolumns WHERE id = @table_id AND colid = @col_id; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND colid > @col_id AND name <> 'description'; IF (@col_id IS NOT NULL) SET @sql = @sql + ','; PRINT @sql; END; SET @sql = @sql + ' FROM MY_table'; EXEC (@sql);</code>
このコードは、テーブルの列を反復処理し、「説明」ではない列のみをクエリに追加することで、SELECT
ステートメントを動的に構築します。 これにより、目的の「SELECT * EXCEPT」動作が効果的にシミュレートされます。 このアプローチは、再利用可能にするために関数またはストアド プロシージャ内にカプセル化できます。 この方法は、固有の制限とセキュリティ上の考慮事項により、非運用環境でのデバッグのみを目的としていることに注意してください。
以上が動的 SQL はデバッグのために SQL Server で SELECT * EXCEPT をどのようにシミュレートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。