亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3893 | 回復: 3
打印 上一主題 下一主題

一個嵌套游標的引發(fā)事兒:MySQL存儲過程so power。! [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-07-28 22:24 |只看該作者 |倒序瀏覽
本帖最后由 justin033 于 2010-07-28 22:30 編輯

如下這存儲過程的body部分,問題:

如何把游標cur_1查出來的表名table_name值循環(huán)作為游標cur_2中的SQL語句from的表名

  1. begin
  2. declare l_str1 varchar(30) default ''; # table_name
  3. declare l_str2 int default 0;          # user_id
  4. declare l_str3 int default 0;          # count++
  5. declare l_str4 int default 0;          # router_id
  6. declare db_table varchar(30) default '';
  7. declare l_last_row_fetched int default 0;

  8. declare cur_1 cursor for select distinct table_name from userlib.ul_user_router
  9.    where db_name='userlib' and table_name like 'ul_users_%';

  10. declare cur_2 cursor for select user_id from db_table;

  11. DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row_fetched=1;

  12. open cur_1;

  13. cur1_loop: loop
  14. fetch cur_1 into l_str1;

  15. if  l_last_row_fetched=1 then
  16. leave cur1_loop;

  17. else
  18.   set db_table=concat('userlib.',l_str1);
  19.   select router_id into l_str4 from userlib.ul_user_router where table_name=l_str1;
  20. end if;

  21. open cur_2;

  22. set l_last_row_fetched=0;

  23. cur2_loop: loop
  24. fetch cur_2 into l_str2;

  25. if  l_last_row_fetched=1 then
  26. leave cur2_loop;

  27. else
  28.    set l_str3=l_str3+1;
  29.    if l_str3>110000 then
  30.    leave cur2_loop;
  31.    
  32.    else
  33.    insert into userlib.ul_company(user_id,router_id,title) select l_str2 as user_id, l_str4 as router_id, title
  34.                            from ztest.tmp_title where auto_id=floor(1 + rand() * 147);
  35.        
  36.    end if;
  37.                            
  38. end if;

  39. end loop cur2_loop;
  40. close cur_2;

  41. set l_last_row_fetched=0;

  42. end loop cur1_loop;
  43. close cur_1;

  44. end
復制代碼
游標cur_1
declare cur_1 cursor for select distinct table_name from userlib.ul_user_router
   where db_name='userlib' and table_name like 'ul_users_%';


游標cur_2
declare cur_2 cursor for select user_id from db_table;

  set db_table=concat('userlib.',l_str1);


等候佳音。。。

論壇徽章:
9
每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術版塊每周發(fā)帖之星
日期:2016-03-07 16:30:25
2 [報告]
發(fā)表于 2010-07-29 11:19 |只看該作者
感覺上應該可以用procedure嵌套來代替cursor嵌套,畢竟procedure接受參數(shù),cursor 沒有辦法動態(tài)declare

論壇徽章:
0
3 [報告]
發(fā)表于 2010-07-29 11:24 |只看該作者
如下這存儲過程的body部分,問題:

如何把游標cur_1查出來的表名table_name值循環(huán)作為游標cur_2中的SQL語 ...
justin033 發(fā)表于 2010-07-28 22:24



    沒看出來power在哪兒,慢得很。。。

論壇徽章:
0
4 [報告]
發(fā)表于 2010-07-29 15:32 |只看該作者
回復 2# cenalulu


    估計沒辦法實現(xiàn),因為變量好像不能作為select from xxx中的表名xxx。算了,叫我們程序員寫代碼了。。。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP