1

生の SQL (つまり、ResultSetMapping なし) を実行することができ、MSSQL ストアド プロシージャを呼び出して実行できます。

私が持っているコードは次のとおりです。

$em = $this->get('doctrine')->getManager();
$stmt = $em
    ->getConnection()
    ->prepare('EXEC someSP :id,null,:uid');
$stmt->bindValue('id', '629674');
$stmt->bindValue('uid', '217');
$stmt->execute();
$results = $stmt->fetchAll();

いいえ、問題なく動作します。ただし、SPが複数の結果セットを返す場合、上記は最初の結果セットのみを返すという問題があります。ループして各結果セットを取得する方法はありますか?

4

3 に答える 3

0

各セットを 1 つずつ試して繰り返すことができます。しかし、実際には fetchAll は以下と同じことを行う必要がありますが、試しても問題ありません...

$em = $this->get('doctrine')->getManager();
$stmt = $em
    ->getConnection()
    ->prepare('EXEC someSP :id,null,:uid');
$stmt->bindValue('id', '629674');
$stmt->bindValue('uid', '217');
$stmt->execute();
do{
    $results[] = $stmt->fetchAll()
} while($stmt->nextRowset());
于 2013-06-04T20:27:46.017 に答える
0

OK私はこれを行うことができましたが、接続の周りに独自のラッパーを作成する必要がありました:

せいぜい回避策ですが、コードは基本的に、conf.yml の DBAL パラメータを使用して新しい PDO 接続を作成します。ステートメントを準備して実行し、すべての結果セットを返します。

コードはここで自由に使用できます: https://github.com/scott-davidjones/Symfony2DBALSPWrapper

于 2013-06-05T12:26:23.210 に答える