0

これを行う最善の方法を見つけようとしています....SQL SERVERストアドプロシージャ?また、C#でそれを行うことを考えていますが、どちらにしても私は立ち止まっています。

基本的に私が持っているのは、部品表と数量の列です。この数量列は固定数である可能性がありますが、他のパラメーターに依存する可能性もあります。(長さ、幅、サイズなど)。これはもともと非常に基本的なプロジェクトであり、いくつかの if ステートメントでごまかしましたが、計算された数量を持つ部品の数が増えています。特定の部分を選択する必要があるときに、文字列として保存された関数を実行できるようにしたい。

そのため、必要なパーツに基づいて、パーツとそれに対応する数量を含むテーブルが作成されます。

私はsp_executesql、EXECを読んでいましたが、まだ意味がありません(同等の例が見つかりませんでした)

テーブル:

PART   QTY
==========
 X    'CASE WHEN @FinWidth >=124 THEN ROUND(1.5 + (@FinHeight-@FinWidth)/2.2,0) ELSE 10 END'    
 Y    '2'

クエリ:

    DECLARE @sqlCommand nvarchar(1000)
    DECLARE @qty decimal(18,3)
    DECLARE @finHeight decimal(18,3)
    DECLARE @finWidth decimal(18,3)
    DECLARE @part varchar(80)


    SET @finHeight = 120
    SET @finWidth = 100


    sp_executesql....something??
    EXEC(something)??
4

2 に答える 2

1

その他のフィールドに関連するビジネス ロジックに基づいて数量を返す関数を作成します。関数の例は次のようになります

create dbo.fn_GetQuantity(@Qty int, @width decimal(18, 3), @Height decimal(18,3))
returns int
as
begin
    -- TODO Apply all business logic related to @width & @height here and calculate new @Qty
    return @Qty
end

次に、プロシージャで、必要なパラメーターを指定してこの新しい関数を呼び出すだけです。

create proc dbo.sGetParts()
as
begin
    select Part, dbo.fn_GetQuantity(Qty, finWidth, finWidth)
    from parts
end
于 2013-07-19T14:09:06.030 に答える