成都网站建设设计

将想法与焦点和您一起共享

mysql赋值怎么返回,赋值表达式的返回值

MySQL里面如何如何将存储过程返回的表赋值给另一个新声明的表?

MYSQL不支持返回游标

成都创新互联-专业网站定制、快速模板网站建设、高性价比庆阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式庆阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖庆阳地区。费用合理售后完善,十年实体公司更值得信赖。

只有把SP1的结果集插入临时表

在SP2中查询出来

Mysql将存储过程执行后的值赋值给变量

Mysql存储过程查询结果赋值到变量的方法

把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的方式来实现赋值。示例代码:

drop table if exists test_tbl;

create table test_tbl (name varchar(20), status int(2));

insert into test_tbl values('abc', 1),('edf', 2),('xyz', 3);

drop procedure IF EXISTS pro_test_3;

delimiter //

create procedure pro_test_3()

begin

DECLARE cnt INT DEFAULT 0;

select count(*) into cnt from test_tbl;

select cnt;

-- 多个列的情况下似乎只能用 into 方式

select max(status), avg(status) into @max, @avg from test_tbl;

select @max, @avg;

end

delimiter ;

call pro_test_3();

MySQL 如何在一个语句中更新一个数值后返回该值

update t1 set aa=now() where id=1 ;

select aa from t1 where id=1;

或者

update t1 set aa=now() where id=1 and @now:=now();

select @now();

MYSQL如何用SQL返回一个值??再用这个值进行查询?

一楼的SQL语句效率比较低,试试我这条:

SELECT a.ztid FROM phome_ecms_article a,phome_enewszt b WHERE a.ztid=b.ztid

-----------------------------

帮你解释一下哈,这条SQL语句的意思是:

从表phome_ecms_article(并指定了缩写表名a)和表phome_enewszt(并指定了缩写表名b)里去查找两个表的ztid相同的数据,并返回表phome_ecms_article的ztid字段

如果要返回更多的字段数据,可以自己再添加字段,例如

SELECT a.ztid,a.username,a.password FROM phome_ecms_article a,phome_enewszt b WHERE a.ztid=b.ztid

提示哈:我这里写的是例子,字段都是我自己编的,你得根据你表的实际结构来写SQL语句。

~记得给我分哦~ 不懂的话再发消息给我~

mysql 存储过程中变量的定义与赋值操作

一、变量的定义

mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end

块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。

定义一个变量语法如下:

declare

var_name[,...]

type[default

value]看一个变量定义实例

declare

last

date;二、mysql存储过程变量赋值

变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下

复制代码

代码如下:

set

var_name=

[,var_name

expr]...给上面的last变量赋值方法如下

set

last

=

date_sub(

current_date(),interval

1

month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下

select

col

into

var_name[,...]

table_expr我们来通过查询给v_pay赋值。

create

function

get

_cost(p_custid

int,p_eff

datetime)

return

decimal(5,2)

deterministic

reads

sql

data

begin

declare

v_pay

decimail(5,2);

select

ifnull(

sum(pay.amount),0)

into

vpay

from

payment

where

pay.payd=p_eff

and

pay.custid=pid

reutrn

v_rent

+

v_over

-

v_pay;

end

$$

好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。

以下是其它网友的补充

在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。

定义变量使用DECLARE语句,语法格式如下:

DECLARE

var_name[,...]

type

[DEFAULT

value]

其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT

value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。

定义与使用变量时需要注意以下几点:

DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。

DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。

存储过程中的变量名不区分大小写。

定义后的变量采用SET语句进行赋值,语法格式如下:

SET

var_name

=

expr

[,var_name

=

expr]

...

其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。

例如:

复制代码

代码如下:

begin

declare

no

varchar(20);

declare

title

varchar(30);

set

no='101010',title='存储过程中定义变量与赋值';

end

提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。

如何 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赋值怎么返回,赋值表达式的返回值
分享网址:http://chengdu.cdxwcx.cn/article/phpeje.html