IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Adaptive Server Enterprise Sybase Discussion :

[T-SQL] Erreur avec Replace..


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 28
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    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

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    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

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Par défaut
    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

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Elle existe pourtant bien, mais en 15

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

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

Discussions similaires

  1. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  2. [T-SQL] Erreur avec Replace..
    Par AbyssoS dans le forum Sybase
    Réponses: 5
    Dernier message: 31/03/2006, 17h55
  3. [8i][PL/SQL] erreur avec lpad dans une fonction
    Par sali dans le forum Oracle
    Réponses: 3
    Dernier message: 16/03/2006, 06h22
  4. Réponses: 6
    Dernier message: 08/06/2004, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo