php - 带有PDO的php中Oracle的程序

标签 php oracle pdo propel

我在使用 propel 1.6 和 oracle 过程时遇到问题。我将它发布在 PDO 下,因为我是 Propel 只是为了代理我对 PDO 的调用。

基本上程序获取用户名和密码,检查是 确定并返回用户。 因此,它返回一个 types.cursorType。

sql是这样开始的。

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

我的 php 代码是:

$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(); 

现在抛出一个异常类型: {PDOException} SQLSTATE [HY000]:一般错误:6550 OCIStmtExecute: ORA-06550: 第 1 行,第 7 列: PLS-00306:调用“SP_LOGIN”的错误参数的数量或类型

我做错了什么?

提前致谢。

P.S:我在 Propel 论坛上问了这个问题,他们指导我搜索 PDO 解决方案。

最佳答案

我怀疑问题出在第一个参数上。您告诉 PDO 它是一个字符串 (PDO::PARAM_STR) 但它实际上是 types.cursorType。有一个 user comment in the PHP manual这表明不支持引用游标。

不幸的是,PDO 的 Oracle 驱动程序是实验性的并且(恕我直言)基本上被放弃了。

关于php - 带有PDO的php中Oracle的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121244/

相关文章:

php - 初学者更新记录 PDO 时遇到问题

php - 我如何检查特定 mysql 表的特定列的任何行中是否存在值

linux - 如何更改weblogic安装目录?

sql - 使用 rownum 在 Oracle 上更新具有递增 ID 的表是否安全?

php - Laravel Eloquent 模型中的字段

php - 如何使用 Laravel IoC 将数据库注入(inject)构造函数

php - Yii:从模型的嵌套连接表访问属性

php - 为什么 Bootstrap Modal 上的按钮第二次不起作用?

php - 将 session 限制为仅 1 个用户登录实例

database - PL/SQL 触发器从一个表上的 INSERT 更新另一个表