p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    avril 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 15
    Points : 2
    Points
    2

    Par défaut Procédure stockée avec des dates : Error 37000

    Bonjour

    Je rencontre un problème pour lancer une procédure stockée SQL Server 2005, comportant une variable date et une datetime, depuis du PHP.

    Mon code est le suivant :

    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
     
    // Connexion au serveur TVM (SQL Serveur) :
    $username="xxxxxx";  	// Représente le user sur la base
    $password="xxxxxx";  	// Représente le password
    $bd="xxx";  			// Représente le nom du driver ODBC pour SQL Server
    $server="xx.xxx.xxx.xxx";
     
    $connexionTVM = odbc_connect("Driver={SQL Server};Server=$server;Database=$bd;",$username,$password);
     
    $a = 'A';
    $b = 'KH001M';
    $c = '"10/17/12"';
    $d = '"10/17/12 06:30:00 AM"';
    $e = 'GVA';
    $f = '';
    $g = '';
    $h = '';
     
    $stmt = odbc_prepare($connexionTVM, "{CALL My.Procedure($a, $b, $c, $d, $e, $f, $g, $h)}");
    $res  = odbc_execute($stmt, array()) or die("<B>Error!</B> Couldn't Run Query: Error Code:  ".odbc_error());
    La connexion n'est pas le problème. J'utilise déjà la même forme de code pour lancer d'autres procédures stockées sur le même serveur, mais qui n'ont accessoirement pas de date/datetime dans les paramètres.

    L'erreur Odbc que j'ai : 37000 (via mon odbc_error())

    J'ai déjà essayé plusieurs format de date, dont unix et yyyy-mm-dd hh:ii. J'ai rajouté un double guillemet car sinon j'ai l'erreur 37000 qui me pointe une erreur de syntaxe soit au niveau des "/" soit des "-" (Warning: odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Syntaxe incorrecte vers '/'., SQL state 37000 in SQLExecute in blabla on line 28 --> erreur donnée sans le odbc_error())

    Auriez-vous une idée sur ce qui bloque le lancement de la procédure ?

    Merci pour votre aide
    Flacdo

  2. #2
    Invité de passage
    Inscrit en
    avril 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 15
    Points : 2
    Points
    2

    Par défaut

    Précision sur l'erreur affichée :
    37000 [ODBC SQL Server Driver]Valeur de caractère non valide pour la spécification de la casse

    J'ai essayé de passer les dates avec strtotime, en utilisant le format affiché dans SQLServer (mm/j/yyyy hh:ii:ss AM), avec doubles guillemets, simples guillemets... je suis vraiment à court d'idée :/

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    24 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 24 191
    Points : 35 584
    Points
    35 584

    Par défaut

    C'est plutôt des guillemets simples donc et en mettant l'année en entier :
    Est-ce que tu as un résultat différent en mettant 10/17/2012 et 17/10/2012 ?
    Si le résultat est le même, le problème ne se situe peut être pas au niveau de ce paramètre.

Discussions similaires

  1. Procédure stockée avec des tables temporaires
    Par enamorada dans le forum SSRS
    Réponses: 0
    Dernier message: 01/09/2012, 15h56
  2. [.NET-C#] Procédure stockée retournant des recordset avec ORAOLEDB
    Par catd dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 06/07/2011, 22h09
  3. Tester des procédures stockées avec SqlUnit et ANT
    Par olivier_m dans le forum Débuter
    Réponses: 3
    Dernier message: 08/11/2009, 13h00
  4. Procédure stockée avec @@rowcount et @@error
    Par karine.cornut dans le forum Développement
    Réponses: 4
    Dernier message: 22/09/2008, 16h32

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