我正在研究一个存储过程,它将接受一个字符串并返回一个新的文本字符串。输入参数是@OrderId
并且@OrderText
是一个带有美元符号封闭变量的字符串,就像这样......$Order Name$ sent to $Customer$
有效变量在一个Variables
表中(订单名称、客户等值,总共 25 个应该保持相当静态)。变量在字符串中只能使用一次。
存储过程需要返回字符串,但将变量替换为各自的值。
示例 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 可以提供帮助吗?