Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 846
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 846
    Points : 27 203
    Points
    27 203

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •