Q:存储过程怎么用?(嫌太长就直接看红字吧)比如:从表A 抽取某些记录result 然后动态生成一个表B 并将result插入这一个过程 如果用后台语言 比如java就jdbc一句一句敲:1.先从A表select出某些记录
2.放到result  
3.接着create表B 
4.然后遍历result 
5.最后一条条记录insert进去B上面整个过程  单纯在本地用很少的数据作测试 人肉也感觉不了有多慢多快前人经验说:实际开发这样做会很卡前人经验:数据库能做的 尽量让数据库做 而当要真的用上存储过程,就不知道具体什么场合具体怎么使用
个人理解就是一堆共同完成某个功能sql语句 放在一个procedure里 然后call一下数据库就很快得完成一系列sql操作,但在书本上学到的存储过程,感觉就是为了使用而使用,几个参数实际要怎么用不清不楚的
现在自己能想到 参数就用在 
数量(如控制查询记录的数量) 
字段名表名(如在哪个库哪个表操作)
字段值(如用where找出某条记录)【没实战经验,单靠想觉得很不成熟,请提点建议假如要完成上面提到的【从表A 抽取某些记录result 然后动态生成一个表B 并将result插入】
自己的想法:把12345那些步骤放到一个存储过程里 思路大概这样子:create procedure sp_xxx
(参数一,参数二) --根据参数(字段id的值)返回某记录
begin
declare cur cursor for select * from 表A where id=参数一 or id=参数二;
if(表B不存在){
create 表B
}
while 某条件 do 
fecth cur into p1, p2, p3
insert into 表B values(p1, p2, p3)
end while 
end这样是不是会比jdbc入门那样敲语句快?
【没实战经验,单靠想觉得很不成熟,请提点建议(插一下:实际问题是不知道会从表A抽出几条记录,上面的个人YY是仅抽出两条记录,所以只用两个参数,若未知要抽取的记录数就懵了,不知道要咋整,求建议)写这么多,就是不知道存储过程一般用在什么地方,在什么情况下,和入门级jdbc那种写法要怎么取舍(如在后台写一句select * from A和
create procedure sp_selectA()begin select * from A; end; 
然后再call ,这一看好像为了用而用)Q:视图怎么用?在对视图做出操作 也会对相应的表做出操作
但一旦涉及两个表 如插入一条记录到视图中(该视图基于两个表),就不能操作
实在想不出在开发里视图怎么用书里说的用法太泛 能不能举些简单的例子 说明 这个时候操作视图 比直接操作几个基础表 更方便快捷?
期待前辈们指点迷津QAQ

解决方案 »

  1.   

    Q:存储过程怎么用?MYSQL官手免费手册中如下
      

  2.   

    Q:视图怎么用?MYSQL官手免费手册中如下
      

  3.   

    阅读全文后,
    感叹曰:
    都讲得这么详细让人无从下手啊!
    创建视图的语句
    CREATE VIEW v AS SELECT * FROM tmp where tmp.X>0 and tmp.Y<0;
    那么这个视图里面的数据就永远都是满足  tmp.x>0 and tmp.Y<0的,你修改了tmp表后,不满足条件的会自动消失!
    哈哈!我这说的就跟没说差不多了!