从两个存储过程创建字符串模板

Create String Template from two stored procedures

我有两个 return 结果集的存储过程。

如何使用它们填充字符串并更新另一列?

exec getEmailSignatureDetails 'Jane', 'Doe'

exec getFeaturedAccount 'June'

我想将这两个 return 列映射到变量。

然后我想将变量放入一个字符串中。

然后用该字符串更新另一个 table 中的列。

来自getEmailSignatureDetails的输出:

addCity       | addLine     | addSt |  addZip | fName | lName
--------------+-------------+-------+---------+-------+------
San Francisco | 777 SV Lane | CA    |  94016  | Jane  | Doe

来自getFeaturedAccount的输出:

month | img      
------+----------
June  | base64...

我想把它变成像

这样的字符串
Your package has been delivered to 
@fName @lName
@addLine
@addCity @addSt, @addZip
@img

然后使用与名称匹配的字符串更新一列。

如果我理解你的问题,你希望通过宏替换动态填充模板

例子

-- Create some Sample Data
Declare @getEmailSignatureDetails Table ([addCity] varchar(50),[addLine] varchar(50),[addSt] varchar(50),[addZip] varchar(50),[fName] varchar(50),[lName] varchar(50))
Insert Into @getEmailSignatureDetails Values 
 ('San Francisco','777 SV Lane','CA',94016,'Jane','Doe')

Declare @getFeaturedAccount Table ([month] varchar(50),[img] varchar(50))
Insert Into @getFeaturedAccount Values 
 ('June','base64..')



-- Declare the Template
Declare @Template varchar(max) ='
Your package has been delivered to 
@fName @lName
@addLine
@addCity @addSt, @addZip
@img
'

-- Populate the Template
Select @Template = replace(@Template,'@'+Field,Value)
 From ( 
        Select C.*
         From (values (convert(XML,(Select * From  @getEmailSignatureDetails Join  @getFeaturedAccount on [month]='June' For XML Raw ) ) ) ) A(XMLData)
         Cross Apply (
                        Select Field = a.value('local-name(.)','varchar(100)')
                              ,Value = a.value('.','varchar(max)') 
                         From  A.XMLData.nodes('/row')  as C1(n)
                         Cross Apply C1.n.nodes('./@*') as C2(a)
                         Where a.value('local-name(.)','varchar(100)') not in ('Column1','Column2')
                     ) C
     ) A

已更新模板

Your package has been delivered to 
Jane Doe
777 SV Lane
San Francisco CA, 94016
base64.. 

如果它有助于可视化,子查询是一个 "dynamic" 逆轴并生成以下内容:

Field     Value
addCity   San Francisco
addLine   777 SV Lane
addSt     CA
addZip    94016
fName     Jane
lName     Doe
month     June
img       base64..   -- (presumably would be the image)