当前位置:首页 » 存储配置 » mysql存储过程out

mysql存储过程out

发布时间: 2023-08-19 03:51:33

❶ mysql 存储过程怎么调用

php调用mysql存储过程和函数的方法
存储过程和函数是MySql5.0刚刚引入的。关于这方面的操作在PHP里面没有直接的支持。但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用。

在php中调用存储过程和函数。

1。调用存储过程的方法。

a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,

一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql

变量。

b。如果存储过程有OUT变量,声明一个Mysql变量。

mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句。

入set @mysqlvar=$phpvar ;

c。使用mysql_query()/mysql_db_query()执行mysql 变量声明语句。

mysql_query("set @mysqlvar=$pbpvar");

这样,在mysql服务器里面就有一个变量,@mysqlar。如果是IN参数,那么其值可以由phpar传入。

d。 如果是存储过程。

1。执行 call procere()语句。

也就是mysql_query("call proceer([var1]...)");

2. 如果有返回值,执行select @ar,返回执行结果。

mysql_query("select @var)"

接下来的操作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。

如果时函数。 直接执行 select function() 就可以了。
$host="localhost";
$user="root";
$password="11212";
$db="samp_db";
$dblink=mysql_connect($host,$user,$password)
or die("can't connect to mysql");
mysql_select_db($db,$dblink)
or die("can't select samp_db");
$res=mysql_query("set @a=$password",$dblink);
$res=mysql_query("call aa(@a)",$dblink);
$res=mysql_query("select @a",$dblink);
$row=mysql_fetch_row($res);
echo $row[0];

java语言调用mysql存储过程(需要获取到存储过程中的out 变量),

用getObject方法
getObjectObject getObject(int parameterIndex)
throws SQLException以 Java 编程语言中 Object 的形式获取指定参数的值。如果值为 SQL NULL,则驱动程序返回一个 Java null。

此方法返回一个 Java 对象,其类型对应于使用 registerOutParameter 方法为此参数注册的 JDBC 类型。通过将目标 JDBC 类型注册为 java.sql.Types.OTHER,可以使用此方法来读取特定于数据库的抽象数据类型。
参数:
parameterIndex - 第一个参数是 1,第二个参数是 2,依此类推
返回:
保存 OUT 参数值的 java.lang.Object
抛出:
SQLException - 如果 parameterIndex 无效;如果发生数据库访问错误,或者在关闭的 CallableStatement 上调用此方法

❸ mysql存储过程怎么接收返回参数

mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。
mysql中存储过程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;

SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN

SET result = 1;-- 已存在

SELECT
result;

ELSE

IF @c_count_a > 0 THEN

IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN

❹ mysql怎么调用out参数的存储过程

call sp_add();
是不是你定义的过程有问题吧,并没有指出返回结果来
像我这样是可以的:

CREATE PROCEDURE sp_add(a int, b int,out c int)
begin

set c=a+ b;

end;
调用过程:
call sp_add (1,2,@a);
select @a;

❺ mysql 存储过程

.关于MySQL的存储过程

存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL存储过程的创建

(1).格式

MySQL存储过程创建的格式:CREATE PROCEDURE过程名([过程参数[,...]])
[特性...]过程体

这里先举个例子:

  • mysql>DELIMITER//

  • mysql>CREATEPROCEDUREproc1(OUTsint)

  • ->BEGIN

  • ->SELECTCOUNT(*)INTOsFROMuser;

  • ->END

  • ->//

  • mysql>DELIMITER;


  • 注:
  • (1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

    (2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

    (3)过程体的开始与结束使用BEGIN与END进行标识。

热点内容
家用电脑安装服务器内存 发布:2025-02-01 14:38:50 浏览:257
增量调制编译码实验报告 发布:2025-02-01 14:30:30 浏览:787
不良人2无敌伤害脚本 发布:2025-02-01 14:23:04 浏览:398
地图flash源码 发布:2025-02-01 14:13:33 浏览:957
家庭影院配置什么样的音响 发布:2025-02-01 14:04:33 浏览:545
苹果手机存储空间不能用怎么回事 发布:2025-02-01 14:03:04 浏览:259
qq易语言盗号源码 发布:2025-02-01 14:01:25 浏览:812
源神比较好的云服务器 发布:2025-02-01 13:55:27 浏览:208
黑苹果idea编译慢 发布:2025-02-01 13:45:30 浏览:552
c和linux 发布:2025-02-01 13:39:38 浏览:177