2016-09-13 5 views
0

Je ne peux pas obtenir la requête tronque simplement une table pour travailler avec Korma:truncate table avec sqlkorma

(korma.core/defentity readings) 
(korma.core/exec-raw ["TRUNCATE TABLE ?" [:name readings]]) 

et je reçois:

Syntax error in SQL statement "TRUNCATE TABLE ?[*]"; expected "identifier"; SQL statement: 
TRUNCATE TABLE ? [42001-191] 
+1

Généralement, vous ne pouvez pas utiliser la variable de liaison dans la position du nom de la table. – ntalbs

+0

et quelque chose comme (k/exec-raw (str "TRUNCATE TABLE" (: lectures de noms))) fonctionnerait ici? Je ne voudrais vraiment pas ajouter une autre bibliothèque pour cette requête simple. – fbielejec

+0

Je pense que ça va marcher. Essayez-le vous-même. Comme 'truncate' est un DDL, je pense qu'il ne sera pas invoqué très fréquemment, l'utilisation de SQL dynamique ne causera aucun problème. – ntalbs

Répondre

0

Comme l'un des commentaires suggests La substitution de paramètre bind est uniquement pour les valeurs dans DML, pas pour les schémas dans DML ou DDL. C'est une distinction sémantique, pas syntaxique.

La forme

(k/exec-raw (str ...)) 

devrait fonctionner, en utilisant la forme vectorielle, même avec un paramètre vide VEC ne peut.