多くの場合、ビジネスロジックをアプリケーションに書き込むために使用されるストアドプロシージャがあります。これらのprocsには、1000行以上のコードが含まれることがあります。 1000行のアプリケーションコードにメソッド/関数を書くと正しく批判されます。長いprocsを別のprocsに分割しなければならないのでしょうか?クラス内のメソッドはそうでしょうか?確かにコードをより使いやすくするために、これ以上のことはしません。ストアドプロシージャの構造化
答えて
まず、Natの答えに同意します.T-SQLデバッグ用のツール(デバッガなど)は、他の言語で見つかる機能の近くにはありません。
第2に、ストアドプロシージャ間で値を渡すときにいくつかの潜在的な問題があります。単純なデータ型を渡すのは簡単です。関連するデータ型を渡すことはより複雑になります。テンポラリテーブルを使用すると、XML、区切り文字列、レコードセットなどに追加のコーディングが必要になり、オーバーヘッドが増え、パフォーマンスに影響が出ます。
入力パラメータと出力パラメータを標準のメソッド(標準データ型)で処理できる場合は、ストアドプロシージャを分割することが必要です。入力と出力を渡すために多くのコーディング作業が必要な場合、ストアドプロシージャーは大きく維持されます。
データベースのサービスレイヤーについて考える必要があるように思えます。これにより、多くの手続き型コードのビジネスロジックをより適切な言語に移行できますが、承認されたAPIを通じてデータベースへのアクセスを強制します。
"コード行"は、コードの再利用可能性の尺度ではないと思います。私はあなたがこれらの「長い」手続きをはるかに質的に見る必要があると思います。私は過去にいくつかの長い手順を経ていましたが、コードを短縮しモジュール化できるかどうかは本当に依存していますか?ロジックが実際に他のアプリケーションによって再利用されているのか、それとももっと教科書の欲望ですか?私は、1000行以上のコードがあり、批判されたり、小さな部分に分解される必要がないエンタープライズアプリケーションにたくさんのモジュールがあると確信しています...
1000行以上のコードは正当化されていますか?もちろん違います。私はちょうどあなたが見なければならない唯一の要因ではないことを強調したいと思います。
長いストアドプロシージャは、再利用可能で堅牢な短いコードブロックに分割する必要があります。残念なことに、データベース開発で使用されている言語とツールは、実際にこれを行うことをサポートしていません。
あなたのSPが非常に大きい場合、あなたはこの手順が「多くのことをします」と明確に言えるでしょう。もしそうなら、あなたはこれらのことを別々にするべきです。 この機能をサポートする必要がある場合は、1000行のスパゲッティコードで作業するよりも、そのようなSPを一度簡単にリファクタリングすることができます。
- 1. Oracleストアドプロシージャ構造化パラメータ
- 2. ストアドプロシージャ構造
- 3. 構造化データテストツールブレッドクラムエラー
- 4. OracleストアドプロシージャPowerShellにテーブル構造を返す
- 5. 構造化された、構造化されていない、半構造化されたデータ
- 6. ツリー構造の可視化
- 7. Joomlaの構造化データ
- 8. playframeworkアプリケーションの構造化
- 9. 構造化Haskell(gtk2hs)GUIの
- 10. モデルの構造化 - MVC(PHP)
- 11. HTML CSSの構造化コンテナ
- 12. MySQLデータベーステーブルの構造化
- 13. Androidのレイアウト構造化
- 14. 構造体とのカプセル化
- 15. JSON構造の簡略化
- 16. パーズツリー構造の可視化
- 17. Gdataスプレッドシートクエリの構造化
- 18. Excel構造化参照テーブルの構文
- 19. ストアドプロシージャこのストアドプロシージャは、構造化される方法である立方体の結果
- 20. C構造体、構造体へのポインタ、適切な初期化
- 21. メモリ構造(可視化)
- 22. 構造化NumPy配列を高速化
- 23. F#不完全な構造化された構造
- 24. DOM操作とJavascriptデータ構造:フラットまたは構造化?
- 25. Javascriptでのアサインメントの構造化のメリット
- 26. Rubyでのツリーデータ構造の永続化
- 27. C++での構造体の初期化
- 28. WebアプリケーションでのJSFファイルの構造化
- 29. このIF構造の簡略化
- 30. 構造体の初期化の問題?
SQLはSETベースであり、手続き型ではないためです。 1000行は疑わしいですが、何かが間違っているという実際の指標ではありません。 –
これは別の問題を引き起こします。多くの人が、ストアドプロシージャのビジネスロジックを提唱しています。そのアプローチを判断することなく、ビジネスロジックは手続き型であることが多いため、DB内でどのように構造化する必要がありますか? – Craig
データベースにはビジネスロジックを実装するためのさまざまな場所があります:テーブル、その関係、トリガー、およびその他の制約 –