您的位置:首页 > 数据库 > Oracle

PHP调用Oracle的存储过程实现方法

2017-11-25 14:56 543 查看
存储过程很高端、大气、上档次,对于存储过程我一向的观点是支持使用,必竟我们追求数据存储的“速度和效率”,Oracle作为超专业级的数据库服务引擎,在效率上,如果一次需要做一系列SQL操作,则需要往返于PHP与ORACLE之间,不如把操作直接放到数据库,这样有效减少往返次数,增加效率。为了能让想了解存储过程的朋友便于理解,写了下面这个例子,先来看如何建立数据表和存储过程:

01
//在Oracle中建立一个供测试的数据表
02
CREATE
TABLE
TEST
(
03
ID
NUMBER(16)
NOT
NULL
,
04
NAME
VARCHAR2(30)
NOT
NULL
,
05
PRIMARY
KEY
(ID)
06
);
07
//插入一条数据
08
INSERT
INTO
TEST
VALUES
(5,
'PHP_BOOK'
);
09
//建立一个存储过程
10
CREATE
OR
REPLACE
PROCEDURE
PROC_TEST
(
11
p_id
IN
OUT
NUMBER,
12
p_name
OUT
VARCHAR2
13
)
AS
14
BEGIN
15
SELECT
NAME
INTO
p_name
16
FROM
TEST
17
WHERE
ID
=5;
18
END
PROC_TEST;
在PHP中调用,不多费话了,代码里都有注释的,聪明的你相信会看懂:

01
<?php
02
//建立数据库连接
03
$user
=
"test"
;
//数据库用户名
04
$password
=
"test"
;
//密码
05
$conn_str
=
"tnsname"
;
//连接串(cstr
:Connection_STRing)
06
$remote
=
true
//是否远程连接
07
if
(
$remote
)
{
08
$conn
=
OCILogon(
$user
,
$password
,
$conn_str
);
09
}
10
else
{
11
$conn
=
OCILogon(
$user
,
$password
);
12
}
13
//设置绑定
14
$id
=
5;
//准备绑定的php变量
id
15
$name
=
""
;
//准备绑定的php变量名
16
/*
调用存储过程的sql语句(sql_sp:SQL_StoreProcedure)
17
*
语法:
18
*
BEGIN存储过程名([[:]参数]);END;
19
*
加上冒号表示该参数是一个位置
20
*/
21
$sql_sp
=
"BEGIN
PROC_TEST(:id,:name);END;"
;
22
$stmt
=
OCIParse(
$conn
,
$sql_sp
);
23
//执行绑定
24
OCIBindByName(
$stmt
,
":id"
,
$id
,
16);
//参数说明:绑定php变量$id到位置:id,并设定绑定长度16位
25
OCIBindByName(
$stmt
,
":name"
,
$name
,
30);
26
OCIExecute(
$stmt
);
27
//结果
28
echo
"name
is:$name<br>"
;
29
?>
更多文章阅读=============================================================================================

微信h5神兽麒麟12牛牛房卡代理

h5微信12牛牛房卡代理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: