Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2006, 20h17   #1
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 10
Points : 10
Par défaut [T-SQL] Erreur avec Replace..

Bonjour tlm,
J'ai une erreur qui est survenu sans aucune modification. Ça marchait très bien et maintenant je ne peux même plus enregistrer ma procédure stockée car j'ai une erreur.
Voici l'erreur: (J'ai mis toute des ' afin d'illustrer le bon nombre de ', mais dans le message d'erreur je ne saurais dire si c'est des ' ou des ")
Code :
1
2
3
4
5
6
Erreur 207 : '''' : nom de colonne incorrect.
''' : nom de colonne incorrect.
'''' : nom de colonne incorrect.
''' : nom de colonne incorrect.
'''' : nom de colonne incorrect.
''' : nom de colonne incorrect.
et voici mon code qui génère l'erreur, je tiens à spécifier que ça a toujours marcher correctement jusqu'à aujourd'hui.
Code :
1
2
3
SET @logSoftware = REPLACE(@logSoftware, "'", "''")
SET @logCompany = REPLACE(@logCompany, "'", "''")
SET @logProduct =  REPLACE(@logProduct, "'", "''")
Des erreurs comme ca, j'aurais juste le gout de frapper l'écran tellement c'est frustrant.
Mais la je sèche totalement, j'attend vos suggestions
Merci d'avance
AbyssoS

Edit: Je viens de m'apercevoir que TOUT mes replace de mon code génère la même erreur, je veux seulement doubler mes apostrophes et la je ne comprend plus qu'est-ce qui se passe.
AbyssoS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 11h19   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Comment est-ce que vous soumettez ce code? Est-ce dans une proc stockée?
Quel est le contenu des variable avant les appels à replace().
Est-ce qu'il pourrait y avoir une quote simple errante quelque part ?

Michael
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 18h20   #3
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 10
Points : 10
1)Jai ce code dans une procédure stockée et dans une focntions de l'utilisateur. L'erreur survient au deux places. Ce que je comprend pas c'est que tout marchais, j'ai seulement fait un changement dans un commentaire et vlang, pu rien marche.
2)Le contenu de mes variables sont des chaines de caractères qui conserve différente informations exemple: "McAfee Alert Manager" , "Système d'exploitation", ... Lorsque j'ai une apostrophe dans ma chaîne, ca me fait une erreur plus loin dans mon traitement, ce qui est normal et c'est pour ca j'utilise replace.
3)J'ai fouiller et A à Z ma procédure et ma fonctions avant de poster. Je n'ai trouver aucun quote simple. Pour m'assurer que c'étais pas le changement que je venais de faire qui causait l'erreur, j'ai enlever ce changement mais l'erreur persiste.

Je vais écrire tout le code de ma procédure stockée avant mon replace si ca peux vous aidez.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
CREATE PROCEDURE [xxx].[dt_xxxxxxxxxxx] AS
 
SET nocount ON
SET DATEFORMAT ymd
 
/*Déclaration des variables utilisées */
DECLARE @logFileName 	varchar(254)		
DECLARE @logSoftware 	varchar(254)		
DECLARE @logCompany 	varchar(64)		
DECLARE @logProduct 		varchar(64)		
DECLARE @logDate 		varchar(32)		
DECLARE @logVersion 		varchar(32)		
DECLARE @logOriginalFileName varchar(32)	
DECLARE @logLangID 		varchar(10)
 
DECLARE @valider		int
DECLARE @cptCommit		int
 
 
/* Déclaration du curseur pour xxxxx */
DECLARE C_listeLogiciel CURSOR 
FAST_FORWARD
READ_ONLY 
FOR
SELECT FILENAME, SOFTWARE, COMPANYNAME, PRODUCTNAME, DATETIME, FILEVERSION, ORIGINALFILENAME, LANG_ID
FROM 		xxxxx
 
OPEN C_listeLogiciel
 
FETCH NEXT FROM C_listeLogiciel INTO @logFileName, @logSoftware, @logCompany, @logProduct, @logDate, @logVersion, @logOriginalFileName, @logLangID
 
 
SET @cptCommit = 0
BEGIN TRANSACTION
/* Boucle qui parcours tout les enregistrements de xxxxx */
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @cptCommit = @cptCommit + 1
	SET @logSoftware = REPLACE(@logSoftware, "'", "''")
	SET @logCompany = REPLACE(@logCompany, "'", "''")
	SET @logProduct =  REPLACE(@logProduct, "'", "''")
J'ai masquer quelque donnée en xxxxx pour une question de confidentialité.

Merci d'avance
AbyssoS
AbyssoS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 11h43   #4
Membre à l'essai
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 20
Points : 20
Bonjour,
A moins que la fonction REPLACE ne soit une fonction utilisateur, elle n'existe pas nativement sous ASE apparemment : j'ai cherché dans le "Guide de l’utilisateur Transact-SQL" et à l'aide de la commande sp_syntax 'replace'.
Cordialement
SQL972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 16h00   #5
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 10
Points : 10
Merci, je vais essayer de trouver une alternative.
Ce que je comprend pas, c'est que tout a bien marcher pendant 2 semaine et soudainement les replace ne marche plus. Cela me parait un peu illogique et mon replace est reconnu par mon environnement par la couleur quil lui est attribuer. Mais je vais essayer de trouver une alternative,
Merci pour ton aide
AbyssoS
AbyssoS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 17h55   #6
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Elle existe pourtant bien, mais en 15

Sinon, il y a str_replace dès la 12.5.x
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h58.


 
 
 
 
Partenaires

Hébergement Web