您的位置:

一个php处理oracle的,php oracle

本文目录一览:

php调用oracle存储过程与函数

对于存储过程的源代码,开始都需要先定义接受的参数,例如:

PROCEDURE edit_entry(

status_out OUT NUMBER,

status_msg_out OUT VARCHAR2,

id_inout IN OUT INTEGER,

title_in IN VARCHAR2,

text_out OUT CLOB,

categories_in IN list_of_numbers

);

从 PHP 中调用存储过程 对于要从 PHP 中执行以调用过程的 SQL 语句而言,您将通常在 Oracle BEGIN ...END; 块(称作匿名块)中嵌入调用。例如:

?php

// etc.

//$sql = 'BEGIN sayHello(:name, :message); END;';

//然后,通过调用 oci_bind_by_name() 将参数绑定到 PHP 变量。 如果使用以下 DDL 语句定义了 sayHello

//:

//CREATE OR REPLACE PROCEDURE

//sayHello (name IN VARCHAR2, greeting OUT VARCHAR2)

//AS

//BEGIN

//greeting := 'Hello ' || name;

//END;

//

//注意,您可以使用 SQL*Plus 命令行运行上面的语句。将该语句保存到文件 (SAYHELLO.SQL)。接下来,使用

//SQL*Plus 登录:

 // $ sqlplus username@SID

 // 然后,使用 START 命令创建该过程:

 // SQL START /home/username/SAYHELLO.SQL

 // 以下 PHP 脚本调用该过程:

$conn = oci_connect('SCOTT','TIGER') or die;

$sql = 'BEGIN sayHello(:name, :message); END;';

$stmt = oci_parse($conn,$sql);

// Bind the input parameter

oci_bind_by_name($stmt,':name',$name,32);

// Bind the output parameter

oci_bind_by_name($stmt,':message',$message,32);

// Assign a value to the input

$name = 'Harry';

oci_execute($stmt);

// $message is now populated with the output value

print "$message\n";

?

调用程序包中的过程时,将使用句号来分隔程序包名称与过程名称。 可以使用以下语句指定 blog 程序包:

CREATE OR REPLACE PACKAGE blog AS

TYPE cursorType IS REF CURSOR RETURN blogs%ROWTYPE;

/*

Fetch the latest num_entries_in from the blogs table, populating

entries_cursor_out with the result

*/

PROCEDURE latest(

num_entries_in IN NUMBER,

entries_cursor_out OUT cursorType

);

/*

Edit a blog entry.If id_inout is NULL, results in an INSERT, otherwise

attempts to UPDATE the existing blog entry. status_out will have the value

1 on success, otherwise a negative number on failure with status_msg_out

containing a description

categories_in is a collection where list_of_numbers is described by

TYPE list_of_numbers AS VARRAY(50) OF NUMBER;

*/

PROCEDURE edit_entry(

status_out OUT NUMBER,

status_msg_out OUT VARCHAR2,

id_inout IN OUT INTEGER,

title_in IN VARCHAR2,

text_out OUT CLOB,

categories_in IN list_of_numbers

);

END blog;

/

PHP如何连接oracle数据库

首先你要在php.ini文件中找到

extension=php_oci8.dll 前面的注释符号“;”去掉,使php能够加载支持oracle的模块;

下面的代码是调试通过的,可直接使用的:

html

body

?php

$dbconn=OCILogon("root","pass","(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP)(HOST=远程IP)(PORT = 1521))(CONNECT_DATA =(SID=GZXNCW)))");

if($dbconn!=false)

{

echo "连接成功";

if(OCILogOff($dbconn)==true)

{

echo "关闭连接成功!";

}

}

else

{

echo "连接失败";

}

?

/body

/html

?php

$dbconn=oci_connect("你的账号","你的密码","你的数据库名称");//请把中文件设置为你的值;

$stmt=oci_parse($dbconn, "select * from scott.hallo");

oci_execute($stmt, OCI_DEFAULT);

echo $conn."----selecting\n\n";

while (oci_fetch($stmt))

{

echo ($conn."[".oci_result($stmt, "TEST")."]\n\n");

}

echo ($conn . "----done\n\n");

?

php 连接oracle数据库语句怎么写?

以系统为windowns为例,

1、先PHP.INI中的oracle扩展也开启了

PHP下php.ini(注意,有时是在windows目录)修改下下

其中的

extension=php_oci8.dll 去掉前面的“;”号

extension=php_oracle.dll 去掉前面的“;”号

把php_oci8.dll 、和php_oracle.dll 文件复制到windwos的system32下

2、系统中应当有安装ORCALE的系统,然后配制远程ORACLE的的监听。就是你能用你配好的ORACLE系统访问远程的数据库。

{例:

在ORACLE安装目录下找到tnsnames.ora,然后按下面的例子配置一下

BASETEST 命名=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX服务器IP地址)(PORT = 1521端口))

)

(CONNECT_DATA = (SERVICE_NAME = masprod 实例ID))

)

}

3.在你的PHP网页目录下写个测试连接的程序试试

?php

$dbconn=OCILogon("username","pwd","(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = [远程服务器IP])(PORT = 1515))

)

(CONNECT_DATA =

(SERVICE_NAME = [数据库名字])

))");

if($dbconn!=false)

{

echo "连接成功";

if(OCILogOff($dbconn)==true)

{

echo "关闭连接成功!";//=这里有问题

}

}

else

{

echo "连接失败";

}

?