Les Guillemets doubles Oracle des Alias de Colonne
Ok, c'est un peu d'une obscure question, mais j'espère que quelqu'un peut m'aider avec elle.
Le système que je suis en train de travailler sur construit une chaîne SQL dynamique pour exécution à l'intérieur d'une procédure stockée, et une partie de SQL dynamique de définir des alias de colonne, qui eux-mêmes sont en fait les valeurs récupérées à partir d'un autre tableau de données générées par des utilisateurs.
Ainsi, par exemple, la chaîne pourrait ressembler à quelque chose comme;
SELECT table1.Col1 AS "This is an alias" FROM table1
Cela fonctionne bien. Toutefois, la valeur qui est utilisée pour l'alias peut potentiellement contenir un double guillemet, qui rompt l'extérieur des guillemets. J'ai pensé que je pouvais peut-être échapper les guillemets à l'intérieur de l'alias en quelque sorte, mais je n'ai pas eu la chance de trouver comment le faire. Barre oblique inverse ne fonctionne pas, et à l'aide de deux guillemets doubles dans une ligne de résultat dans cette erreur;
SQL Error: ORA-03001: unimplemented feature
03001. 00000 - "unimplemented feature"
*Cause: This feature is not implemented.
Quelqu'un avait une expérience avec ce problème avant?
Un grand bravo à toute réflexion quelqu'un a de.
p.s. les guillemets sont nécessaires autour de l'alias, car ils peuvent contenir des espaces.
OriginalL'auteur Christopher McAtackney | 2008-09-11
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous mettre un autre personnage au lieu de guillemets doubles et les remplacer avec des guillemets dans le code?
Quelque chose comme ceci:
Ensuite, il suffit de remplacer | avec ".
Je sais que c'est un hack, mais je ne peux pas penser à une meilleure solution... Et ce que vous faites il y a un hack de toute façon. Le "gentil" façon serait de sélectionner les valeurs et les noms de colonne séparément et de les associer dans votre code. Qui rendrait les choses beaucoup plus propre.
OriginalL'auteur ibz
utiliser l'Oracle de devis opérateur:
le '#' peut être remplacé par n'importe quel caractère
OriginalL'auteur swissunix
Lorsque je l'exécute:
Oracle retourne ce (avis de l'Oracle généré nom de la colonne):
Le fait que l'Oracle du nom de la colonne ne comprennent pas mon double-quote me dit que l'Oracle ne peut probablement pas la représenter.
Meilleur pari pour autant que je peux voir, c'est de la bande de double-quotes de vos données avant d'utiliser des noms de colonnes. Malheureusement, ce sera également exiger que vous faites la même chose de filtrage lorsque vous sélectionnez ces colonnes, mais je ne vois pas une autre façon.
OriginalL'auteur JosephStyons
éventuellement, un domaine fécond de l'enquête serait de se pencher sur la citation de la méthode.
mon $quotedString = $dbh->quote( $string );
OriginalL'auteur EvilTeach
Essayer cela, deux guillemets simples ressemblent effectivement à une double citation de sortie:
select 1 as "University ''John Smith''" from dual;
OriginalL'auteur Artem