MSSQLからストアドプロシージャを呼び出すPHPファイルがあります。ストアドプロシージャは値を計算し、一時テーブルに格納します。このようなPHPからストアドプロシージャを呼び出すときSQL Server 2012のMSSQL_Queryを使用してPHPストアドプロシージャを呼び出すと無効な値が返される
$cmd="exec get_value ".implode(",",$parameter_arr);
$result = mssql_query("SET ANSI_NULLS ON;");
$result = mssql_query("SET ANSI_WARNINGS ON;");
$result= mssql_query($cmd,$conn) or die("Error :".mssql_get_last_message());
値の戻り値は整数ではなく「::」のみでした。 Iは、T-SQLのストアドプロシージャを実行する
、それが正しい値'02を返す:15:00' T-SQL output
私はPHP 5.3.3を使用しています。私は私のPHPをアップグレードする必要がありますか?なぜPHPで正しく値を表示できないのですか?
私はストアドプロシージャを制御できません。しかし、私は私のPHPページに結果を表示する必要があります。しかし、結果は不完全です。一部の値は戻ってきており、戻っていない値もありますSELECTステートメントで重い計算値を持つこれらの値は、PHPページに表示される問題があります。 Like
SELECT CASE WHEN LEN(CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0))) = 1 THEN '0' + CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0)) ELSE CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0)) END + ':'
+ CASE WHEN LEN(CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))) = 1 THEN '0' + CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60)) ELSE CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60)) END + ':'
+ CASE WHEN LEN(SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2)) = 1 THEN '0' + SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2) ELSE SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2) END
AS 'ETS_Program_Hours'
これは::だけ私のmssql_queryに戻ります。 誰も前に同様の問題に直面していますか?
アドバイスをしてください。ありがとう
私は、ストアドプロシージャからの戻り値を表示する必要があります。しかし、PHPはすべての戻り値を表示することはできません。 –