Ich dank euch beiden für eure Hilfe und Geduld, so langsam weiss ich nicht mehr weiter....
Egal in welche Doku oder Tutorial ich zum Thema PDO Aufruf einer Stored Procedure ich schau, ist genau das beschrieben was ich versuch....
Ich hab mir nun zum testen noch einmal eine kleine procedure geschrieben, welche einfach nur einen Wert in eine Datenbanktable schreibt:
CREATE PROCEDURE blubb
@bla varchar (255)
AS
BEGIN
INSERT INTO test (laber) VALUES (@bla)
END
Für ich sie direkt auf dem SQL Server aus, funktioniert das Ganze und der Wert der Variablen @bla wird in den table test und die spalte laber geschrieben.
Rufe ich das Ganze per PHP auf und übergebe einen Wert direkt, dann wird dieser auch korrekt in den Table geschrieben:
$sql = 'EXEC blubb test';
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->debugDumpParams();
Ruf ich aber das Ganze per PHP mit dem Platzhalter auf, dann kommt wieder der Bekannte Fehler:
$sql = 'EXEC blubb (?)';
$stmt = $db->prepare($sql);
$bu_name = 'test';
$stmt->bindParam(1, $bu_name);
$stmt->execute();
$stmt->debugDumpParams();
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 102 [Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der Nähe von '@bla'. (SQLExecute[102] at ext\pdo_odbc\odbc_stmt.c:133)
SQL: [14] EXEC blubb (?) Params: 1 Key: Position #0: paramno=0 name=[0] "" is_param=1 param_type=2
Der Aufruf der Prozedur scheint zu funktionieren und auch die Prozedur selber funktioniert ja, denn sonst würde es mit der direkten Übergabe ja auch nicht funktionieren.
Habt Ihr vielleicht noch eine Idee wie ich auf dem MSSQL Server prüfen kann, was tatsächlich bei der letzten Methode beim Server ankommt, weil eigentlich kann es ja nur noch irgendwie ein falscher Datentyp sein oder sowas......
Grüßle,
hawaii