`
王之子
  • 浏览: 109913 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PHP 调用 Oracle 存储过程出现 not all variables bound 原因

阅读更多

今天发现使用 PHP 调用 Oracle 存储过程总是出现这样的一个错误。

 

ORA-01008: not all variables bound

 

后来折腾了很久,发现是变量名写错了。

 

<?php
$conn = oci_connect('SCOTT','TIGER') or die;// 建立连接 

if (!$conn) { 
	$e = oci_error(); 
	print htmlentities($e['message']); 
	exit; 
} 

$sql = 'BEGIN pack_gt_calc.Pro_gt_Confirm(:year, :week, :errno, :errmsg); END;'; // 查询语句 
$stid = oci_parse($conn, $sql); // 配置SQL语句,准备执行 
if (!$stid) { 
	$e = oci_error($conn); 
	print htmlentities($e['message']); 
	exit; 
}

//  Bind the input parameter
oci_bind_by_name($stid,':year',$year,32);

// Bind the input parameter
oci_bind_by_name($stid,':week',$week,32);

// Bind the output parameter
oci_bind_by_name($stid,':errno',$error,32);
// Bind the output parameter,变量名 ermsg 写错了
oci_bind_by_name($stid,':ermsg',$errmsg,64);
// Assign a value to the input 

$year = '2016';

$week = '4';

$r = oci_execute($stid); // 执行SQL。OCI_DEFAULT表示不要自动commit 


if(!$r) { 
	$e = oci_error($stid); 
	echo htmlentities($e['message']); 
	exit; 
} 

echo "errmsg is : $error<br>";
echo "errmsg is : $errmsg<br>";

oci_close($conn); 

?>

参考资源:http://www.oracle.com/technetwork/cn/articles/fuecks-sps-082839-zhs.html

 

原文链接:http://woqilin.blogspot.com/2016/05/php-oracle-not-all-variables-bound.html

分享到:
评论

相关推荐

    oracle存储过程个人总结

    Oracle存储过程是数据库编程的重要组成部分,它允许程序员在数据库中编写复杂的逻辑,执行多次使用的SQL语句和数据库操作。在PL/SQL(Procedural Language/Structured Query Language)环境中,Oracle存储过程集成了...

    个人亲测oracle触发器调用java程序

    这将创建一个名为test的存储过程,该存储过程调用Java程序的modify方法。 四、创建触发器 最后,我们需要创建一个触发器来调用存储过程。我们可以使用CREATE TRIGGER语句来实现这一步骤。例如: ``` create or ...

    oracle数组存储过程批量插入.docx

    在提供的文档中,提到了两种方法将数据批量插入Oracle存储过程:一种是通过.NET环境(C#)调用,另一种是通过Java环境。这两种方法都利用了数组作为参数来传递数据,从而避免了循环中的单条插入操作。 首先,我们来...

    Oracle存储过程和触发器基本操作解析.docx

    Oracle存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据处理和业务逻辑实现中扮演着关键角色。在Oracle数据库中,存储过程是一组预先编译的SQL和PL/SQL语句,可以作为独立的单元执行,提高了代码的...

    MySQL存储过程 MySQL存储过程

    #### 五、使用存储过程的原因 1. **提高性能**:存储过程可以被编译并缓存,从而避免了每次执行时都需要重新解析 SQL 语句的过程,这可以显著提高执行速度。 2. **减少网络流量**:相比于发送多条 SQL 语句,发送一...

    MySQL存储过程基础教程.pdf

    本教程提供了MySQL存储过程的基础知识,包括其定义、使用原因、结构、作用域、参数、错误处理、安全性、函数、元数据、编写技巧以及安装和配置方法。掌握这些知识对于开发者而言,将能够有效利用存储过程来提升...

    PRO C 程序设计和ORACLE调用接口

    《PRO C程序设计和ORACLE调用接口》是关于数据库编程的一个重要主题,主要探讨了如何使用C语言来与Oracle数据库进行交互。在IT行业中,数据库的高效管理和数据操作是关键任务之一,而PRO C(也称为Oracle Pro*C)...

    oracle触发器调用java类.docx

    Oracle触发器调用Java类是一种将业务逻辑扩展到数据库内部的方法,这在处理特定的数据操作时非常有用。本文档提供了一个具体的步骤示例,演示如何实现这一功能。 首先,我们需要将Java程序加载到Oracle数据库中。`...

    利用python-oracledb库连接Oracledb数据库,使用示例

    python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...

    【MySQL】存储过程(十一).pdf

    通过调用存储过程,可以简化应用程序开发人员的工作流程,减少数据在网络间的传输次数,从而提高数据处理效率。存储过程类似于其他编程语言中的函数或方法,可以接收参数并返回值,适用于封装特定业务逻辑。 #### ...

    oracle error message

    5. **ORA-01008: not all variables bound** - **含义**:当PL/SQL块中有未绑定的变量时触发此错误。 - **原因**:可能是由于在执行PL/SQL块前没有正确地初始化变量。 - **解决方案**: - 确保所有使用的变量都...

    oracle触发器调用java类.pdf

    这将创建一个名为 test 的存储过程,该过程将调用 OracleTriggerJava 类的 modify 方法。 最后,创建 trigger 可以使用以下命令: create or replace trigger gxy_trigger after insert on jkt_msg_2 for each row...

    cx-oracle英文原版.pdf

    - 涉及PL/SQL的执行,包括存储过程、存储函数和匿名块的调用。 - 版本管理功能,如版本的基于版本的重定义(Edition-Based Redefinition, EBR)。 ### 9. 绑定变量和其他高级特性(Binding Variables and Advanced ...

    存储过程删除mysql中一些表的例子

    ### 知识点二:存储过程的创建与调用 在给定的部分内容中,可以看到创建存储过程的基本语法结构,例如: ```sql DELIMITER$$ CREATE PROCEDURE 存储过程名称() BEGIN -- SQL语句 END$$ DELIMITER; ``` 其中,`...

    sql 存储过程常用函数及游标用法

    在SQL中,存储过程是一种预编译的SQL语句集合,它可以封装一系列的数据库操作,提高数据处理效率,同时提供更好的安全性和可重用性。本文将深入探讨SQL存储过程中的常用函数、游标用法以及日期函数。 一、字符函数 ...

    Oracle PLSQL应用指南

    调用存储过程的方法如下: ```sql EXECUTE procedure_name (parameter_values); ``` ##### 4.3 存储过程的优点 - **提高性能**:存储过程可以在服务器端执行,减少网络流量。 - **重用代码**:存储过程可以被多个...

    如何在Oracle中实现搜索分页查询

    这样,应用程序只需要调用存储过程并传入相应的分页参数,就能获取指定范围的记录。 值得注意的是,ROWNUM是在数据排序之后计算的,因此在使用`ORDER BY`子句时,会按照新的顺序计算ROWNUM。同时,Oracle的基于规则...

    MySql存储过程编程.chm

    What This Book Does Not Cover Conventions Used in This Book Which Version? Resources Available at the Book's Web Site Using Code Examples Safari® Enabled How to Contact Us ...

    oracle词法大全

    Oracle是世界上最广泛使用的数据库管理系统之一,它拥有丰富的语法和功能,涵盖了从基本的SQL查询到复杂的存储过程和触发器。以下是对"Oracle词法大全"中包含的知识点的详细阐述: 1. **Oracle SQL语句**: - ...

Global site tag (gtag.js) - Google Analytics