您的位置:

php使用存储过程,php存储过程应用场景

本文目录一览:

php调用mysql存储过程,如何实现。 我的代码如下:

mysql存储过程返回2个资源,第一个是执行信息,第二个是存储过程返回结果。

mysql_*系列函数无法获取超过1个资源,需使用mysqli或PDO代替。

PDO:

        $stmt = $db-prepare("CALL pro_rb_save(?,?,@return_msg);");  

        $stmt-bindParam(1, $a);

        $stmt-bindParam(2, $b);

        $stmt-execute ();

        $outputArray = $db-query("select @return_msg")-fetch(PDO::FETCH_ASSOC);

        

        var_export($return_msg);

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 什么时候用mysql 存储过程

实现原理

首先,需要知道怎么写mysql存储过程,了解mysq存储过程语言,

其次,使用mysql工具创建存储过程。

最后,通过mysql_query()函数执行mysql变量的设置和mysql存储过程及返回值。

具体代码如下:

mysql存储过程代码

create procedure pro_name(user_id int)

begin

.........

end

2. PHP代码

$host = "localhost";

$user = "root";

$password = "232412";

$db = "user_db";

$dblink = mysql_connect($host,$user,$password)or die("can't connect to mysql");

mysql_select_db($db,$dblink)or die("can't select user_db");

$user_id = 1;

$res = mysql_query("set @a=$user_id",$dblink);

$res = mysql_query("call pro_name(@a)",$dblink);

php存储过程调用实例代码

复制代码

代码如下:

//比如要调用的存储过程为gxtj(a,b)

$db=new

mysqli("localhost","ssss","aaaaa","bbbb");

mysqli_query($db,"SET

NAMES

utf8");

$result=$db-query("call

gxtj($year,$jd)");

//

gxtj是mysql的存储过程名称

[color=gray][/color]

while(

$row

=

$result-fetch_array(MYSQLI_ASSOC))

//完成从返回结果集中取出一行

{

while

($key=key($row)){

//依次取得字段名

$value=current($row);

//依次取得字段值

}

}

实例一:无参的存储过程

复制代码

代码如下:

$conn

=

mysql_connect('localhost','root','root')

or

die

("数据连接错误!!!");

mysql_select_db('test',$conn);

$sql

=

"

create

procedure

myproce()

begin

INSERT

INTO

user

(id,

username,

sex)

VALUES

(NULL,

's',

'0');

end;

";

mysql_query($sql);//创建一个myproce的存储过程

$sql

=

"call

test.myproce();";

mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。