封装字符串以忽略引号
Posted
技术标签:
【中文标题】封装字符串以忽略引号【英文标题】:Encapsulate string to ignore quotes 【发布时间】:2020-03-16 11:46:24 【问题描述】:在 SSIS 中工作,我想捕获错误消息并插入到我的表中。
这是我的插入语句(作为 SSIS 变量):
INSERT INTO dbo.info_etl (event_start,event_end,object,event,status,affected_rows,comment)
VALUES
(CONVERT(DATETIME,'"+ (DT_WSTR, 20) @[System::StartTime] +"',103),GETDATE(),'AMDB_ETL_sn_Mirror', 'LOAD','FAILURE', 0 ,
'Component: " + @[System::SourceDescription] +
"Error: " + @[System::ErrorDescription] + "')
不幸的是,一旦变量 @[System::ErrorDescription] 的内容包含引号 ("),此插入将失败,因为这会破坏我插入到列 comment 的字符串。
示例; @[System::ErrorDescription] =
Executing the query "RAISERROR ( 'Whoops, an error occurred.',11,1)" failed with the following error: "Whoops, an error occurred.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
是否有任何巧妙的方法来封装要按字面意思处理的字符串部分,即使包含引号?
【问题讨论】:
不要注入值,使用参数化查询;那么问题就不存在了。执行 Transact-SQL 任务有一个参数窗格;使用它。 【参考方案1】:我认为错误在
DATETIME,'"+ (DT_WSTR, 20) @[System::StartTime] +"',103
我觉得应该是这样的:
删除: '"+ 和 +"'
【讨论】:
请花点时间阅读help center 中的editing help。 Stack Overflow 上的格式与其他网站不同。以上是关于封装字符串以忽略引号的主要内容,如果未能解决你的问题,请参考以下文章