时间:2021-07-01 10:21:17 帮助过:10人阅读
代码如下:
- //建立一个test表
- create table test (
- id number(16) not null,
- name varchar2(30) not null,
- primary key (id)
- );
- //插入一条数据
- insert into test values (5, 'php_book');
- //建立一个存储过程
- create or replace procedure proc_test (
- p_id in out number,
- p_name out varchar2
- ) as
- begin
- select name into p_name
- from test
- where id = 5;
- end proc_test;
php代码
代码如下:
- <?php
- //建立数据库连接
- $user = "scott"; //数据库用户名
- $password = "tiger"; //密码
- $conn_str = "tnsname"; //连接串(cstr : connection_string)
- $remote = true //是否远程连接
- if ($remote) {
- $conn = ocilogon($user, $password, $conn_str);
- }
- else {
- $conn = ocilogon($user, $password);
- }
- //设定绑定
- $id = 5; //准备用以绑定的php变量 id
- $name = ""; //准备用以绑定的php变量 name
- /** 调用存储过程的sql语句(sql_sp : sql_storeprocedure)
- * 语法:
- * begin 存储过程名([[:]参数]); end;
- * 加上冒号表示该参数是一个位置
- **/
- $sql_sp = "begin proc_test(:id, :name); end;";
- //parse
- $stmt = ociparse($conn, $sql_sp);
- //执行绑定
- ocibindbyname($stmt, ":id", $id, 16); //参数说明:绑定php变量$id到位置:id,并设定绑定长度16位
- ocibindbyname($stmt, ":name", $name, 30);
- //execute
- ociexecute($stmt);
- //结果
- echo "name is : $name
- ";
- ?>