Hướng dẫn dùng oracke trong PHP

Tôi đang gặp sự cố với propel 1.6 và thủ tục oracle. Tôi đăng nó dưới PDO vì tôi là Propel chỉ để ủy quyền cuộc gọi của tôi tới PDO.

Về cơ bản, thủ tục lấy tên người dùng và mật khẩu, kiểm tra xem có phù hợp không và trả lại người dùng. Vì lý do đó, nó trả về một loại.cursorType.

Sql bắt đầu như thế này.

CREATE OR REPLACE 
PROCEDURE         "SP_LOGIN" (R_CURSOR OUT types.cursorType, UserId IN 
VARCHAR2, Password IN VARCHAR2) 

mã php của tôi là:

$con = Propel::getConnection(); 
$sql = 'BEGIN SP_LOGIN(:CURSOR, :0, :1); END;'; 
$stmt = $con->prepare($sql); 
$result_arr; 
$stmt->bindParam(":CURSOR", $result_arr, PDO::PARAM_STR || PDO::PARAM_INPUT_OUTPUT); 
$stmt->bindParam(":0", $username, PDO::PARAM_STR); 
$stmt->bindParam(":1", $password, PDO::PARAM_STR); 
$stmt->execute(); 
$result_arr = $stmt->fetchAll(); 

Bây giờ nó ném một ngoại lệ của kiểu: {PDOException} SQLSTATE [HY000]: Lỗi chung: 6550 OCIStmtExecute: ORA-06550: línea 1, columna 7: PLS-00306: số hoặc kiểu đối số không hợp lệ gọi 'SP_LOGIN'

Tôi đang làm gì sai?

Cảm ơn trước.

Tái bút: Tôi đặt câu hỏi này trên diễn đàn Propel và họ hướng dẫn tôi tìm kiếm giải pháp PDO.

3 hữu ích 0 bình luận 4.0k xem chia sẻ