2017-10-05 80 views
0

我有Laravel和Yajra包Oracle數據庫,我怎麼能叫從Laravel 5.4如何在Laravel上調用oracle程序?

一個Oracle過程。這是我的Oracle過程:

create or replace procedure PRW_GENERA_FACTURA(
      pnro in number, 
      pmsj out VARCHAR2 
      ) is 
     BEGIN 
      pmsj := 'El nro. es '||pnro; 

     end PRW_GENERA_FACTURA; 

而且我想這對我的控制器:

$val1 = 20; 
$result = DB::connection('ora_db')->select('exec 
PRW_GENERA_FACTURA(?)',array($val1)); 
return $result; 

它給了我這個錯誤:

Error Code : 900 Error Message : ORA-00900: invalid SQL statement Position : 0 Statement : exec PRW_GENERA_FACTURA(:p0) Bindings : [20] (SQL: exec PRW_GENERA_FACTURA(20))

回答

1

我想你必須這樣做以RAW格式:

$val1 = 20; 

$result = DB::connection('ora_db')->select(
    DB::raw("exec PRW_GENERA_FACTURA(:val1)"), array ('val1' => $val1) 
); 

return $result; 

這個使用PHP到控制器:

$conn = oci_connect('apxjfdev01', 'x....' ,'x...'); 
if (!$conn) { 
$e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), 
E_USER_ERROR); 
} 
$sql = ' BEGIN PRW_GENERA_FACTURA(:PNRO, :PMSJ); END; '; $sql = 
oci_parse($conn,$sql); oci_bind_by_name($sql, ":PNRO", $val1, 32); 
oci_bind_by_name($sql, ":PMSJ", $val2, 32); 
$val1 = $id_f; 
oci_execute($sql); 
+0

給我一個錯誤:錯誤代碼:900 錯誤消息:ORA-00900:無效SQL語句 位置:0 聲明:EXEC PRW_GENERA_FACTURA(:VAL1) 綁定:[20] (SQL:EXEC PRW_GENERA_FACTURA(:VAL1)) – Leoh

+0

可以嘗試'DB ::原始( 「EXEC PRW_GENERA_FACTURA(」。 $ val1。 「))''以確保它與該語句無關。你能在Oracle CLI(sqlplus)中嘗試使用相同的語句嗎? – Webdesigner

+0

給了我同樣的錯誤,但我在我的控制器上使用raw php修復了它。感謝您的幫助 – Leoh

相關問題