Мне нужно вызвать хранимую процедуру на SQL сервере. Я использую ODB C через PHP на Linux.
Я могу подключиться, но не могу вызвать процедуру, что-то не так с моим синтаксисом.
Если разработчик базы данных, которую я вызывал, чтобы запустить ее сам (на Windows), он записал бы это как exe c DW_Insert_MemberFromWeb 158 (158 - это параметр, который мне нужно передать)
$conn = new PDO("odbc:MSSQLServer", $username, $password); // this works fine
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)"); // THIS DOES NOT
if(!$stmt) {echo "could not prepare statement.";}
$success = odbc_execute($stmt, 158);
odbc_close($conn);
Я уже пробовал эти разные способы (по одному на время, конечно):
$stmt = odbc_prepare($conn, 'call DW_Insert_MemberFromWeb(?)');
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call dbo.DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb(?)");
Спасибо за предложения. Сейчас я попробовал все это, но безрезультатно:
$stmt = odbc_prepare($conn, "exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "{call DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb (?)}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb 158}");
$stmt = odbc_prepare($conn, "SELECT * FROM MyTableName");
Я использую PDO ODB C для моего соединения, поэтому я думаю, что мне нужно напиши как это вместо этого ?? Эти строки не завершаются до выполнения строки.
$conn = new PDO("odbc:MSSQLServer", $username, $password);
//$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb ?");
$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb (?)");
//$stmt->bind_param("158");
$stmt->bind_param(158);
$stmt->execute();
$conn = new PDO("odbc:MSSQLServer", $username, $password);
if ($conn) {
echo "connected. ";
} else {
echo "not connected. ";
}