私はここ数時間頭を壁にぶつけていますが、どこを見ればよいか分かっていれば、答えは簡単だと思います。
完全に機能する MS SQL 2005 のコンパイル済みストアド プロシージャがあります。私はそれをテストしましたが、エラーはまったくありません。
ただし、ここに示す PHP インクルード ファイルから同じプロシージャを呼び出すと、ストアド プロシージャが実行を開始したように見えます (mssql トレースは、呼び出しが正しく行われたことを示しています)。途中で停止します。時々、15 件のレコードのうち 10 件が更新されます。また、14 点中 5 点を取ることもあります。
トレース ウィンドウから実行されたコマンドをコピーして、MS SQL Management Studio で直接実行すると、完全に機能します。これにより、ある種のタイムアウトであると思われますか、それとも手順が実行される前に接続を閉じているので、MS SQL 2005 は終了する必要があると考えていますか?
<?php
session_start();
require ('../includes/config.inc.php');
require('../includes/mssql.php');
function include_booking($box, $offeredtolocumid, $surgery, $rate) {
$dbc2 = mssql_connect(DB_HOST, DB_USER, DB_PASSWORD);
$q2 = "exec WEB_Surgery_Box_OfferBoxtoLocum '".$box."', '".$offeredtolocumid."', '".$surgery."'";
$myresult = mssql_query($q2 ,$dbc2);
}
/* set out document type to text/javascript instead of text/html */
header("Content-type: text/javascript");
$offeredtolocumid = $_GET["locumid"];
//$rate = $_GET["rate"];
$rate = 15.99;
$surgery = $_SESSION['surgeryid'];
$box = $_SESSION['currentbox'];
include_booking($box, $offeredtolocumid, $surgery, $rate);
?>
私は PHP / MS SQL ビットに慣れていないので、上記のコードが決して完璧ではないことを理解しています。
問題なく動作する他の多くのプロシージャ コールがあります。これだけではありません。MS SQL サーバーは、この手順を完了するのに平均 0.1 秒かかります。誰かが答えてくれることを願っています。
ありがとうニール