0

SQL Server では、raiserror() でエラーを発生させることができます。接続を中断しない重大度を使用したい。このエラーは、ストアド プロシージャで発生します。SQL Management Studio ではすべて問題なく、この SP を実行するとエラー コードが表示されます。しかし、PHP5 で MDB2 経由でこの SP を実行しようとすると、これは機能しません。私が得るのは空の配列だけです。

MDB2 オブジェクトは次の方法で作成されます (必要なオプションを含む):

$db =& MDB2::connect($dsn);
$db->setFetchMode(MDB2_FETCHMODE_ASSOC);
$db->setOption('portability',MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL);

次のように動作します (PEAR エラーが発生します)。

$db->query("RAISERROR('test',11,0);");

しかし、このエラーを発生させるストアドプロシージャを呼び出すと、

$db->query("EXEC sp_raise_error");

出力はありません。どうしたの?

4

1 に答える 1

2

返された結果オブジェクトを次の方法で確認します

$res = $db->query(..)
if (MDB2::isError($res)) {
    echo $res->getMessage() . "\n" . $res->getUserInfo();
    die();
}

http://pear.php.net/manual/en/package.database.mdb2.intro-fetch.phpを参照してください

于 2010-10-12T08:46:04.693 に答える