建设c2c网站需要多少投资,上海app开发和制作公司,网络架构分为几层,网络服务提供者无正当理由拒绝提供或者拖延背景 由于我们的数据库系统中的游标特别多#xff0c;DBA让我们优化#xff0c;减少游标的使用。
电脑系统#xff1a;windows数据库#xff1a;Oracle数据库图形化界面工具#xff1a;Toad#xff0c;DBeaver(我測試的時候用的)记录日期#xff1a;2023-09-04
具体实…背景 由于我们的数据库系统中的游标特别多DBA让我们优化减少游标的使用。
电脑系统windows数据库Oracle数据库图形化界面工具ToadDBeaver(我測試的時候用的)记录日期2023-09-04
具体实现 在我目前所了解到的数据库中能够实现遍历的有游标CURSOR、FOR循环两种方式不过都要跟loop...end loop;联合使用。 我这里都用了匿名函数这些都是可以直接执行的DBeaver可通過【CtrlShiftO 或者您可以通过单击“查看服务器输出”】
游标
优点 可随时打开关闭使用,可全局可局部缺点 查询了多少变量,就要承接多少
-- 這是一個匿名循環可以直接執行DECLAREvar_text VARCHAR(100);var_value1 VARCHAR(100);var_value2 VARCHAR(100);CURSOR GET_VALUE ISSELECT value1, value2 FROM dualUNION ALLSELECT value11, value22 FROM dual;BEGINOPEN GET_VALUE;DBMS_OUTPUT.PUT_LINE(CURSOR循環開始);LOOPBEGINFETCH GET_VALUE INTO var_value1, var_value2;EXIT WHEN GET_VALUE%NOTFOUND;-- var_text:var_text||||var_value1||;var_text : var_value1;DBMS_OUTPUT.PUT_LINE(var_value1);/** * 具體實現* */END;END LOOP;CLOSE GET_VALUE;
END;FOR
优点 类似代码中的foreach(x in collection)循环取用也与foreach一样取用方便缺点 主要用于局部像from dual这种的要给定栏位不然会报错如果是你自己建的表一般就不会报错
-- 循环
DECLAREvar_text VARCHAR(100);var_value1 VARCHAR(100);var_value2 VARCHAR(100);
BEGINDBMS_OUTPUT.PUT_LINE(FOR循环开始);FOR x IN (SELECT value1 value1, value2 value2, value3, value4, value5 FROM dualUNION ALLSELECT value111, value222, value333, value444, value555 FROM dualUNION ALLSELECT value911, value922, value933, value944, value955 FROM dual)LOOPvar_value1 : x.value1;var_value2 : x.value2;DBMS_OUTPUT.PUT_LINE(var_value1);EXIT WHEN var_value2 value222;-- IF var_value1 LIKE US% THEN-- CONTINUE;END LOOP;
END;总结 那些优缺点都是我自己用的时候感觉的这些东西其实有时候也看你如何使用也有可能是我还没发现好的用法仅供大家参考。