Solved

Handling two tables from a PDO Call to a MS SQL Procedure

Posted on 2010-08-17
4
352 Views
Last Modified: 2013-12-13
HI,

I have a procedure call to a MS SQL DB, the procedure returns two tables, how should I handle the tables, I'm quite able to deal with one. I'm doing it with 2 single calls at present but the page takes too long to call.

My get tables method:

 
public function getTables($procname,$parameter) {
      //see : http://www.php.net/manual/en/pdo.prepared-statements.php example #10 and #11
      $vars = explode(",", $parameter);
      $num = count($vars);
      //create holders for calls
      for ($i = 0; $i <= $num; $i++) {
         $holder.="?";
         if ($i != $num)
         {
            $holder.=",";
         }
      }
//var_dump($holder);
//var_dump($vars );
      $stmt = DBO::prepare("EXECUTE " . $procname . " " . $holder);
      // TODO build bind, may need to change type for strings and ints and others
      // perhaps look to put into dbcalls
      for ($i = 0; $i <= $num; $i++) {
         $stmt->bindParam($i + 1, $vars[$i], PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4000);
      }

// call the stored procedure
      try
      {
        $stmt->execute();
      } catch (PDOException $e)
      {
//echo "\nPDO::errorCode(): ";
//print $dbh->errorCode();
         var_dump($e);
         // var_dump($e);
      }
      $data = ($stmt->fetchAll(PDO::FETCH_ASSOC));
      $stmt->closeCursor();
     // var_dump($data);
      return $data;
   }

Open in new window

0
Comment
Question by:darren-w-
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 40

Accepted Solution

by:
Richard Quadling earned 500 total points
ID: 33463147
Once you've processed the first result set, you need to get the next result set.

http://docs.php.net/manual/en/pdostatement.nextrowset.php contains the documentation for PDOStatement->nextRowset.

PDOStatement->nextRowset() returns true/false if there is/is not a next result set.
0
 
LVL 13

Author Comment

by:darren-w-
ID: 33463353
Thats great, thanks.
0
 
LVL 13

Author Comment

by:darren-w-
ID: 34205727
Coming back to this, and it looks like the MSSQL driver does not support this feature?
0
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 34205779
@Darren, you may be running an older version of the driver.

http://msdn.microsoft.com/en-us/library/ff628153(SQL.90).aspx
0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
This article discusses how to create an extensible mechanism for linked drop downs.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Via a live example, show how to shrink a transaction log file down to a reasonable size.

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question