mysql 进:在存储过程中用select 如何给变量赋值
BEGINdeclarepamt_outdouble(10,2);declarepamt_begindouble(10,2);declarepamt_enddouble(...
BEGIN
declare pamt_out double(10,2);
declare pamt_begin double(10,2);
declare pamt_end double(10,2);
SELECT pamt_out= SUM(amt)
FROM shinaffair.flwq6d
WHERE docid=pdocid;
SELECT pamt_begin= amt_begin
FROM shinhrm.bonuscw
WHERE dept_no=substring(pdocid,3,4 );
set pamt_end=pamt_begin - pamt_out;
UPDATE shinhrm.bonuscw SET amt_out = pamt_out , amt_end =pamt_end where dept_no = substring(pdocid,3,4 );
END
执行结果 好像并没有把值赋给变量pamt_out,pamt_begin 请问这是怎么回事。
在存储过程中用select 给变量赋值具体是怎么使用的。
请教各位高手。在此谢过了。 展开
declare pamt_out double(10,2);
declare pamt_begin double(10,2);
declare pamt_end double(10,2);
SELECT pamt_out= SUM(amt)
FROM shinaffair.flwq6d
WHERE docid=pdocid;
SELECT pamt_begin= amt_begin
FROM shinhrm.bonuscw
WHERE dept_no=substring(pdocid,3,4 );
set pamt_end=pamt_begin - pamt_out;
UPDATE shinhrm.bonuscw SET amt_out = pamt_out , amt_end =pamt_end where dept_no = substring(pdocid,3,4 );
END
执行结果 好像并没有把值赋给变量pamt_out,pamt_begin 请问这是怎么回事。
在存储过程中用select 给变量赋值具体是怎么使用的。
请教各位高手。在此谢过了。 展开
2个回答
展开全部
用select...into语句
下面是mysql 5.0的帮助文档的:
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。
重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:
CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;
SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。
下面是mysql 5.0的帮助文档的:
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。
重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:
CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;
SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。
展开全部
用select...into语句。
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
重要:
SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:
CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;
SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询