将文字字符串作为 SQL 语句执行 - 放置单引号

Execute a literal string as a SQL statement - placement of single quotes

我有以下 SQL 字符串通过链接服务器从 ODBC 进度数据库中提取数据。 这个查询工作正常。

SELECT * 
INTO [TABLE] 
FROM 
OPENQUERY
(
"ODBC DRIVER",
'SELECT CAST(SCHEMA."AB_ACCESSIBILITY"."ACCESS_CODE" AS VARCHAR(20)) AS "ACCESS-CODE"
,CAST(SCHEMA."AB_ACCESSIBILITY"."DESCRIPTION" AS VARCHAR(60)) AS "DESCRIPTION"
,CAST(SCHEMA."AB_ACCESSIBILITY"."ORG_CODE" AS VARCHAR(16)) AS "ORG_CODE"
,CAST(SCHEMA."AB_ACCESSIBILITY"."POINTS" AS INT) AS "POINTS" 
FROM SCHEMA."AB_ACCESSIBILITY" with (nolock)'
)

但是,我想将其转换为 文字字符串 ,以便我可以使用 exec sp_executesql 从存储过程中执行它。

但是,我在正确放置撇号时遇到了问题,因此 exec sp_executesql 可以将其阅读为格式正确的 SQL 语句。

有人可以告诉我在上面的语句中添加额外撇号的位置,以便它可以与 exec sp_excutesql 一起使用吗?

谢谢!

为清楚起见编辑:

  1. With (nolock) 可以满足上述条件

  2. 上面的目的是循环遍历列表中的多个SQL语句以从Progress DB导入数据。

看来您只需要用 '' 转义 ' 字符

SELECT * 
INTO [TABLE] 
FROM 
OPENQUERY
(
"ODBC DRIVER",
''SELECT CAST(SCHEMA."AB_ACCESSIBILITY"."ACCESS_CODE" AS VARCHAR(20)) AS "ACCESS-CODE"
,CAST(SCHEMA."AB_ACCESSIBILITY"."DESCRIPTION" AS VARCHAR(60)) AS "DESCRIPTION"
,CAST(SCHEMA."AB_ACCESSIBILITY"."ORG_CODE" AS VARCHAR(16)) AS "ORG_CODE"
,CAST(SCHEMA."AB_ACCESSIBILITY"."POINTS" AS INT) AS "POINTS" 
FROM SCHEMA."AB_ACCESSIBILITY" with (nolock)''
)