mysql2个存储过程返回结果
不能合并到同一个存储过程吗?如果不能的话,只能新建一张表,然后两个过程都操作这张表。
⑵ MYSQL 存储过程能返回结果集吗
可以,存储过程只是把你的查询语句形成一个固定的格式,这样你要查询的时候就不用每次都执行查询语句了,sql在执行的时候都会将你的sql语句转换为字节码,然后机器才能运行,存储过程就节省了这一步,已经形成了字节码,所以速度才会快,特别是执行次数比较多的时候,可以节省很多时间
⑶ 如何 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
IF @isdead_a = 1 THEN
INSERT INTO t_user_voucher (userid, voucherid, isdead)
VALUES
(userid, voucherid, 1);
UPDATE t_voucher SET c_count = c_count-1 where id = voucherid;
SET result = 0;-- 成功
END;
⑷ 怎样得到mysql存储过程多条语句的结果集
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果 集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:
CREATE PROCEDURE test_proc_multi_select()
BEGIN
select * from testproc;
select * from testproc where id=1;
END;
java 中利用循环,即可获取结果集数据:
con = MConnection.getConn();
String sql = "{call test_proc_multi_select()}";
cs = con.prepareCall(sql);
boolean hadResults = cs.execute();
int i = 0;
while (hadResults) {
System.out.println("result No:----" + (++i));
ResultSet rs = cs.getResultSet();
while (rs != null && rs.next()) {
int id1 = rs.getInt(1);
String name1 = rs.getString(2);
System.out.println(id1 + ":" + name1);
}
hadResults = cs.getMoreResults(); // 检查是否存在更多结果集
}
⑸ 求助大神 mybatis 使用Mysql 的存储过程 怎么返回多个结果集
如何通过MyBatis获取mysql存储过程返回的不确定个数的多个结果集
如果对select
返回的结果行都需要处理,使用游标。
如果只想取得返回多行中的一行,使用limit。
⑹ php mysql 存储过程 返回值
一般你从登陆端获得用户名和密码,
1、然后你通过用户名在数据库中查找
2、如果该用户名不存在,那么返回false
3、如果用户名存在,那么获得相应的密码
4、将从数据库中得到的密码和登陆端得到的密码进行比较
5、如果相同,返回true,表明登陆成功;如果不等返回false,表明失败
这样不用数据库的查询语句”select STH from sth_table where name=“STHNAME" AND password="STHPASSWORD"
并且也安全
⑺ MYSQL如何把存储过程所返回的结果集插入到表
从存储过程返回表类型的值也有二种:
1.存储过程使用浮标参数,即同时指定CURSOR VARYING OUTPUT项.调用者可以使用while及fetch循环遍历该浮标.
2.直接将存储过程返回的结果集插入到表中,即使用insert into 表名 exec 存储过程.此种方式中注意存储过程返回的结果集列与insert的列要完全对应,可以在insert中指定列名来保证对应关系.
------------------------------------------------------------------------------测试:------------------------------------------------------------------------------
----建立测试用的临时表
create table #tmp (colx int,coly int)
insert into #tmp values(1,2)
insert into #tmp values(2,3)
insert into #tmp values(3,4)
select * from #tmpGO----创建返回游标的存储过程
create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmp
open @cur /*该过程返回游标,该游标为colx列的查询结果*/endGO----创建返回表的存储过程
create proc sp_dasselect coly from #tmp /*该过程返回coly列的查询结果*/go----创建用于调用以上二个存储过程的存储过程
create proc sp_easbegindeclare @x int
declare @cur cursor
----接收游标,并遍历游标
EXEC sp_c @cur OUTPUT
fetch next from @cur into @x
while (@@FETCH_STATUS = 0)beginprint @xfetch next from @cur into @xENDclose @curdeallocate @cur
----将存储过程返回的列值再重新插入源表中
⑻ MYSQL的存储过程如何返回查询到的行数据
out返回只能是确定的某种类型的一个值,例如VARCHAR或者INT等等,你想返回多条记录的话只需要在最后加上一个或者多个SELECT语句就行了啊,然后在外面用ResultSet对象接住就行了。
⑼ 该如何写存储过程,实现mysql返回多个结果,其中的结果可能为空
就跟写Java代码里有返回值的方法一样,只是把语法换成Sql里面的写法就好了
aaa: 输入参数
bbb: 输出参数,一个表对象,或者一个结果集
包
proce getMySqlDate(aaa IN varchar2,
bbb OUT tmpTable%ROWTYPE) IS
本体
proce getMySqlDate(aaa IN varchar2,
bbb OUT tmpTable%ROWTYPE)
begin
--查询数据
CURSOR curCc is
select a,b from tab1;
type typeCurCc of table curCc%ROWTYPE;
typeCurCc tabCurCc; -- 定义游标类型
--打开游标把查询处理的数据,赋值到bbb的输出参数就行了。
open 游标
....
bbb.a = 游标.a;
close 游标;
--存储过程终了
END getMysql;
⑽ php调用返回多结果的mysql存储过程
直接处理存储过程的输出参数即可。
调用存储过程的方法。
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() 就可以了。
传出参数的存储过程:
$sql = "
create procere myproce3(out score int)
begin
set score=100;
end; ";
mysql_query($sql);//创建一个myproce3的存储过程
$sql = "call test.myproce3(@score);";
mysql_query($sql);//调用myproce3的存储过程
$result = mysql_query('select @score;');
$array = mysql_fetch_array($result);
echo '<pre>';print_r($array);