文字列を受け取り、新しいテキスト文字列を返すストアド プロシージャに取り組んでいます。入力パラメータは@OrderId
、@OrderText
次のようにドル記号で囲まれた変数を持つ文字列です...$Order Name$ sent to $Customer$
有効な変数はVariables
テーブルにあります (注文名、顧客などの値で、合計 25 個あり、かなり静的なままである必要があります)。変数は、文字列内で 1 回だけ使用できます。
ストアド プロシージャは文字列を返す必要がありますが、変数はそれぞれの値に置き換えられます。
例1
入力:123, $Order Name$ sent to $Customer$
戻り値:Toolkit sent to StackCustomer Inc.
例2
入力:456, $Customer$ requests $delivery method$ for $order type$
戻り値:ABC Inc requests fast shipping for pallet orders.
各変数は、関数を使用して取得できます。
DECLARE @OrderId int = 123
DECLARE @InputText VARCHAR(500) = '$Order Name$ sent to $Customer$'
select
@InputText = case when @InputText like '%$order name$%'
then replace(@InputText, '$Order Name$', getOrderName(id) else '' end,
@InputText = case when @InputText like '%$customer$'
then replace(@InputText, '$Customer$', getCustomer(id) else '' end
-- repeat 25 times
より良い方法はありますか?私の主な関心事は保守性です。変数が追加、名前変更、または削除された場合、このストアド プロシージャを変更する必要があります (ただし、その場合、年に数回しか発生しないと言われています)。この場合、動的SQLは役に立ちますか?