PHPからSQL SERVERストアドプロシージャを呼び出そうとしています。私はそれが働いていると思うが、私はそれがPHPに返すデータを取得することはできません。私は私のPHPコードとサンプルSQL SERVERコードを以下にコピーしています。SQL Serverストアドプロシージャの呼び出し - PHPで返されるxmlデータを取得できません。
私の問題は、reportDataからデータを取り戻すにはどうすればよいですか? mssql_execute()はブール値trueを返します。プロシージャがreportDataにデータをxmlとして格納するように見えます。しかし、mssql_bind()を使用してreferenceによってreportDataにデータを取得しようとすると、xmlからvarcharへの変換に関する警告が表示されます。これらのエラーがスローされます
私のPHPコード
mssql_query("exec ZUSER.pSessionCreate @LoginName = 'admin', @Password = 'xxxx'", $Conn);
$proc = mssql_init("ZUSER.pAppraisal", $Conn);
$reportData="";
$portfolios=3014;
$date="08/19/2009";
mssql_bind($proc, "@reportData", &$reportData, SQLVARCHAR , TRUE, FALSE, 4000);
mssql_bind($proc, "@portfolios", $portfolios, SQLVARCHAR);
mssql_bind($proc, "@date", $date, SQLINT4);
$result = mssql_execute($proc);
。
Warning: mssql_execute() [function.mssql-execute]: message: Implicit conversion from data type xml to varchar is not allowed. Use the CONVERT function to run this query.
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed
私はその後、私はこのエラーを取得するSQLTEXT TO SQLVARCHARからmssql_bindストアドの種類を変更した場合。
Warning: mssql_execute() [function.mssql-execute]: message: Invalid parameter 1 ('@reportData'): Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter. Deprecated types are not supported as output parameters. Use current large object types instead.
それがエラーなしで実行され、trueを返しますが、私は、私はデータを得ることができる方法が分からないreportDataにデータを試してみて、返さないように、私はこのようなmssql_bindストアド使用しないAlso..if私は欲しい。
この場合、mssql_executeを呼び出した後にこのクエリを実行しようとすると、このエラーが発生します。
$result=mssql_query("select field1, field2, field3 from ZUSER.pAppraisal(@reportData)", $Conn);
Warning: mssql_query() [function.mssql-query]: message: Must declare the scalar variable "@reportData"
例SQL Serverコード:
declare @SessionGuid uniqueidentifier
declare @portfolios nvarchar(max)
declare @date datetime
set @portfolios='3014'
set @date='08/19/2009'
exec ZUSER.pSessionCreate @LoginName = 'admin', @Password = 'xxxx'
declare @reportData xml
exec ZUSER.pAppraisal
@[email protected] out
,@portfolios = @portfolios
,@date = @date
select field1, field2, field3 from ZUSER.fAppraisal(@reportData)
私は昨日インストールしました。それがなければ、mssql_connect()を動作させることさえできませんでした。 XMLのmssql_bind()で指定するデータ型は何ですか? また、正しくインストールしなかった可能性がありますか? phpinfoを見て、私は右、それが有効になっています意味 万一に sqlsrv.WarningsReturnAsErrors qlsrv.LogSeverity sqlsrv.LogSubsystems SQLSRVため\tで\tをセクションを参照していますか?これは、php.iniに追加したDLLです。 ありがとう – Jason
'SQLSRV_SQLTYPE_XML'です。 http://msdn.microsoft.com/en-us/library/cc296183(SQL.90).aspx –
を参照してください。私はそれを使用するとサポートされていないタイプを取得します。 mssql_bind($ proc、 "@reportData"、&$ reportData、SQLSRV_SQLTYPE_XML、TRUE、FALSE); 警告:mssql_bind()[function.mssql-bind]:サポートされていないタイプ – Jason