2016-04-06 6 views
0

私は、IN文を使って句を選択、グループ化、並べ替え、並べ替えなど、ほとんどすべてが動的になるSQLプロシージャを書いています。コードの再利用、可読性、メンテナンスの面では、SQLクエリを文字列として渡して実行するだけで大​​丈夫です。私はすべての関連するデータが静的なクエリで結合され、フォーマットされた後、テーブル変数に挿入されるように、私のプロシージャを今作成しています。私はその後、テーブル変数に対して実行されるSQLクエリを渡したいと思います。手順ごとにアクセス許可を制限することはできますか?

これは私に大きなインパクトを与えてくれます。私は渡されている多くのパラメータ型のそれぞれに対して表の値のパラメータを作成することができましたが、それをしたくありません。プロシージャ・レベルで、私が許可したいと思うこれらのことを実行することだけが可能であるような方法で、私のプロシージャをサンドボックスできることが本当に好きなことです。つまり、特定のテーブルから選択しますが、そのような面白いものは許可しません。これはできますか?

+8

*コードの再利用、可読性、メンテナンスの面では、sqlクエリを文字列として渡して実行するだけで大​​丈夫です。** **強く反対します** –

+1

これらのリンクを読んで開始してください: http://www.sommarskog.se/dyn-search.htmlとhttp://www.sommarskog.se/dynamic_sql.html – HLGEM

+0

あまり悲鳴「メンテナンスの悪夢」「全力を尽くす」ことgenericizedのストアドプロシージャよりも雄弁。 –

答えて

0

もちろん可能です。それはプログラミングの単純な問題です。ルールをテーブルに保持し、ストアド・プロシージャのロジックを記述してルール・テーブルを照会し、ルールに従います。

それは基本的にあなたが一般的な、動的なストアドプロシージャを使用していない場合はSQL Serverがすでにあなたのために何を行うには、カスタムコードを書くあなたに達するだろう記念碑的な仕事になります。

私はそれをしませんが、あなたがそれを止める必要はありません。

関連する問題