2016-01-25 67 views
1

我從將數據寫入數據庫的存儲過程中檢索數據時遇到麻煩。連接建立正確,因爲其他程序,只寫數據而不寫(比如「call rec.getProducts()」),效果很好。每當我執行下面的代碼,我得到了一個錯誤:調用存儲過程時內存不足

 
Out of memory (allocated 262144) (tried to allocate -3 bytes) 

過程聲明看起來像這樣:

OUT MSG VARCHAR(300),  
OUT STATE CHAR(5), 
OUT @IDORDER dec(10, 0), 
IN @NAME char(20), 
IN @IDPAYER dec(6, 0),     
IN @PRODUCT char(10), 

我的PHP代碼:

$conn = new PDO(...); 

$sql = "{call rec.saveProduct(?,?,?,?,?,?)}"; 
$rs = $conn->prepare($sql); 
$rs->bindParam(1, $msg, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,300); 
$rs->bindParam(2, $state, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,5); 
$rs->bindParam(3, $idOrder, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT,10); 
$rs->bindParam(4, $name, PDO::PARAM_STR); 
$rs->bindParam(5, $idPayer, PDO::PARAM_INT); 
$rs->bindParam(6, $product, PDO::PARAM_STR); 
$rs->execute(); 

任何幫助將非常感激。

回答

0

當我寫我的存儲過程我寧願是隻通過輸入PARAMS:

IN @NAME char(20), 
IN @IDPAYER dec(6, 0),     
IN @PRODUCT char(10), 

內。然後我返回輸出爲一個結果:

SELECT @MSG AS [MSG], @STATE AS [STATE], @IDORDER AS [IDORDER] 

然後在PHP中:

$sql = "{call rec.saveProduct(?,?,?)}"; 
$rs = $conn->prepare($sql); 
$rs->bindParam(1, $name, PDO::PARAM_STR); 
$rs->bindParam(2, $idPayer, PDO::PARAM_INT); 
$rs->bindParam(3, $product, PDO::PARAM_STR); 
$rs->execute(); 
$row = $rs->fetch(); 

$msg = $row['MSG']; 
$state = $row['STATE']; 
$idOrder = $row['IDORDER'];