数日前、PHP で MSSQL ストアド プロシージャを呼び出すようにしました。時間がかかり、オンライン情報 (特に ADODB に基づく情報) がほとんどありませんでした。
ここでは、ADODB に基づいて MSSQL ストアド プロシージャを呼び出す例を示します。他の人にとって役立つことを願っています。
/*
params をテストします - PHP 4.2.3、4.3.3、4.3.8 では動作しますが、4.3.0 では動作しません:
CREATE PROCEDURE at_date_interval
@days INTEGER,
@start VARCHAR(20) OUT,
@end VARCHAR(20) OUT
AS
BEGIN
set @start = CONVERT(VARCHAR(20), getdate(), 101)
set @end =CONVERT(VARCHAR(20), dateadd(day, @days, getdate()) , 101 )
END
GO
*/
$db->debug=1;
$stmt = $db->PrepareSP('at_date_interval');
$days = 10;
$begin_date = '';
$end_date = '';
$db->InParameter($stmt,$days,'days', 4, SQLINT4); //ここで 97xxoo は In パラメータです
$db->OutParameter($stmt,$begin_date) , 'start', 20, SQLVARCHAR ); //これはストアド プロシージャの戻り値であり、$begin_date に直接アクセスすることで取得できます。
$db->OutParameter($stmt,$end_date,'end', 20, SQLVARCHAR ); //上記と同じ
$db->Execute($stmt);
echo $end_date
ここにも注意してください: $begin_date と $end_date には最初に null 値を割り当てる必要があります。そうしないと、結果は値を取得できません。これが私を長い間夢中にさせた理由です。