2016-08-09 2 views
1

J'ai la chaîne SQL suivante extrait des données d'une base de données de progression ODBC via un serveur lié. Cette requête fonctionne correctement.Exécuter une chaîne littérale en tant qu'instruction SQL - placement de guillemets simples

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)' 
) 

Cependant, Je voudrais convertir en une chaîne littérale pour que je puisse exécuter ce à partir d'une procédure stockée à l'aide exec sp_executesql.

Toutefois, j'ai des problèmes avec le placement correct des apostrophes, de sorte que exec sp_executesql peut le lire comme une instruction SQL correctement formée.

Est-ce que quelqu'un pourrait me montrer où ajouter des apostrophes supplémentaires à l'instruction ci-dessus pour qu'il fonctionne avec exec sp_excutesql?

Merci!

Edits pour plus de clarté:

  1. With (nolock) est très bien pour ce qui précède

  2. Le but de ce qui précède est en boucle sur un certain nombre d'instructions SQL dans une liste pour importer des données à partir d'un Progress DB.

+2

petit détour ... Je remarque que vous utilisez l'indicateur NOLOCK ici. Êtes-vous cool avec des lignes manquantes et/ou dupliquées au hasard? En d'autres termes, est-ce correct si votre requête est la plupart du temps précise la plupart du temps? Vous pourriez vouloir lire un peu plus sur cet indice pour vous assurer de bien le comprendre. http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

+1

Pourquoi pensez-vous que vous avez besoin de lancer ce SQL dynamique? –

+0

@SeanLange Merci - mise à jour la question principale pour plus de clarté – user27768

Répondre

1

On dirait que vous avez juste besoin d'échapper aux «personnages avec « »

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)'' 
) 
+0

Merci Joe pour ce qui précède – user27768