mysql 在存储过程里的游标的表名能不能是变量啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 在存储过程里的游标的表名能不能是变量啊?相关的知识,希望对你有一定的参考价值。

DECLARE t1 VARCHAR(20) default 'users';
DECLARE ordernumbers CURSOR FOR SELECT userid, password from t1;
mysql的人应该都看的懂这两条语句吧,我这样写可以嘛?mysql5.0支持吗?
我自己知道答案了,多谢大家的帮助。我的方法也跟朋友们分享。
可以先用预处理的方式建立一个临时表或者视图,然后将游标声明到临时表或者视图上,这样就可以实现游标的表名是变量了。另外,建议大家用临时表。因为在这个存储过程中建立的视图对其他过程是没有用的,还可能产生冲突,所有用session级的temporary table还是很明智的。

如果表三已经存在,则
insert into 表三(存款银行,存款金额,支付银行,支付金额)
select 表一.存款银行,表一.存款金额,表二.支付银行,表二.支付金额
from 表一,表二
where 表一.存款银行=表二.支付银行
参考技术A Mysql的所有变量都要用@ 参考技术B 可以的,如果你用到一个列的话
游标中的select选择一个列
定义游标后要把这个游标传给参数的

sqlserver 存储过程中变量赋值

sqlserver 存储过程中变量赋值 declare @cc int set @cc=(select count(1) from tablename) 或 select @cc=count(1) from tablename
在下面是用的时候都没有值,例如:
if @cc = 0
这个判断失效,但是当在判断前面加select @cc的时候就可以,不知道为什么,请帮助回答一下,多谢

参考技术A 你没有把问题写多明白啊不过看你得描述,应该是在 as后面声明的局部变量。按你得用法绝对是没有问题的,我试过没问题啊。你说的“if @cc = 0这个判断失效”是什么意思呢?是表里面有记录自然@cc!=0,,“在判断前面加select @cc的时候就可以”又是什么意思?执行存储过程的话,if只是判定条件只有select才会打印出数据~~~~~~~ 参考技术B 先用select count(1) from tablename,判断是否有满足条件的记录,sql对null的判断不太友好 参考技术C 能不能给出完整代码? 参考技术D 当查询的结果没有记录时,@cc的值可能为null
需要看你具体的代码是什么
第5个回答  2011-08-10 654645

以上是关于mysql 在存储过程里的游标的表名能不能是变量啊?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 存储过程怎么赋值?

mysql中解决存储过程表名通过变量传递的方法

mysql存储过程变量自定义函数触发器事件

sqlserver 存储过程中变量赋值

在 mysql sproc 中使用表名的变量

MySQL视图存储过程触发器