{"id":8292,"date":"2021-09-07T17:36:38","date_gmt":"2021-09-07T09:36:38","guid":{"rendered":"http:\/\/www.hefeiyu.com\/?p=8292"},"modified":"2021-09-07T17:36:38","modified_gmt":"2021-09-07T09:36:38","slug":"%e3%80%90%e5%ae%9e%e4%b9%a0%e4%b9%8bt100%e5%bc%80%e5%8f%91%e3%80%91genero-fgl-tiptop4gl-%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02","status":"publish","type":"post","link":"https:\/\/www.hefeiyu.com\/?p=8292","title":{"rendered":"\u3010\u5b9e\u4e60\u4e4bT100\u5f00\u53d1\u3011Genero FGL (TIPTOP4GL) \u5b66\u4e60\u7b14\u8bb02"},"content":{"rendered":"<p>&nbsp;<\/p>\n<h4>\u672c\u7ae0\u8282\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"null\">Genero FGL\u5b66\u4e60\r\n\r\nCURSOR\r\n\r\nCONSTRUCT\uff1a\u83b7\u53d6\u7528\u6237\u8f93\u5165\u7ec4\u6210\u3010WHERE\u6761\u4ef6\u3011\r\n\r\nPREPARE\uff1a\u5c06\u3010SQL\u5b57\u7b26\u4e32\u3011\u8f6c\u6210\u3010\u53ef\u6267\u884cSQL\u3011\r\n\r\nFREE\uff1a\u91ca\u653e PREPARE \u7684\u8bb0\u5f55\r\n\r\n\u6570\u636e\u7684\u67e5\u8be2\r\n\r\nSCROLLING CURSOR\uff08DECLARE\u3001OPEN\u3001FETCH\u3001CLOSE\uff09\r\n\r\nNon-SCROLLING CURSOR\uff08DECLARE\u3001FOREACH\uff09\r\n\r\n\u6570\u636e\u7684\u9501\u5b9a\r\n\r\nLOCKING CURSOR\uff08DECLARE\u3001OPEN\u3001FETCH\u3001CLOSE\uff09\r\n\r\nUSING\u7684\u4f7f\u7528\u65f6\u673a\r\n\r\nTRANSACTION\uff1a\u4e8b\u52a1\u63a7\u5236\r\n\r\nEXECUTE\uff1a\u5927\u91cf\u6267\u884c\u540c\u4e00SQL\u6307\u4ee4\r\n\r\nPUT..FLUSH\uff1a\u5927\u91cf\u6267\u884c\u65b0\u589e\u6307\u4ee4\r\n\r\nARRAY\r\n\r\nARRAY\u7684\u5b9a\u4e49\u548c\u65b9\u6cd5\r\n\r\n\u663e\u793a\u6570\u7ec4\u5185\u5bb9 DISPLAY ARRAY\r\n\r\n\u6570\u7ec4\u5185\u5bb9\u8f93\u5165 INPUT ARRAY\r\n\r\n\u63a7\u5236\u6bb5\u6267\u884c\u987a\u5e8f<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1>CURSOR<\/h1>\n<p>\u5728 Genero FGL \u8bed\u8a00\u4e2d\uff0c\u5f53\u4e0b\u8fbe\u00a0DATABASE dstabase_id\u00a0\u6307\u4ee4\u540e\uff0c\u5373\u4e0e\u6570\u636e\u5e93\u6267\u884c\u94fe\u63a5\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u5f00\u59cb\u8fdb\u884c\u6570\u636e\u7684\u00a0<strong>\u67e5\u8be2\uff08SELECT\uff09\u3001\u66f4\u6539\uff08UPDATE\uff09\u3001\u65b0\u589e\uff08INSERT\uff09\u7b49<\/strong>\u00a0\u52a8\u4f5c\u3002<\/p>\n<p>\u5728\u5904\u7406\u6570\u636e\u65f6\u82e5\u53ea\u6709\u00a0<strong>\u5355\u7b14\u6570\u636e<\/strong>\u00a0\u7684\u9009\u53d6\uff0c\u5219\u53ef\u7528\u00a0<strong>\u5355\u7eaf\u7684 SQL \u6307\u4ee4\u5373\u53ef<\/strong>\u3002<\/p>\n<p>\u82e5\u662f\u8981\u6293\u53d6\u00a0<strong>\u591a\u7b14\u6570\u636e<\/strong>\u00a0\u5904\u7406\u65f6\uff0c\u5c31\u4f1a\u56e0\u6293\u53d6\u7684\u7279\u6027\u4e0d\u540c\uff08\u4f8b\u5982\uff1a\u4e00\u6b21\u53ea\u6293\u4e00\u7b14\u6570\u636e\u5904\u7406\uff0c\u5b8c\u6210\u540e\u518d\u6293\u6b21\u7b14\uff0c\u5982\u300e\u4e2a\u4eba\u8d44\u6599\u8868\u300f\uff1b\u6216\u4e00\u6b21\u5168\u90e8\u6293\u53d6\uff0c\u4e00\u8d77\u7f16\u8f91\uff0c\u5982\u300e\u4e2a\u4eba\u95e8\u7981\u8fdb\u51fa\u8bb0\u5f55\u8868\u300f\u7b49\uff09\uff0c\u800c\u9700\u4f7f\u7528\u4e0d\u540c\u7684\u00a0<strong>\u6307\u6807\uff08CURSOR\uff09<\/strong>\u3002<\/p>\n<h2>CONSTRUCT\uff1a\u83b7\u53d6\u7528\u6237\u8f93\u5165\u7ec4\u6210\u3010WHERE\u6761\u4ef6\u3011<\/h2>\n<p>\u4f5c\u7528\uff1a<strong>\u8ba9\u7528\u6237\u5728\u753b\u9762\u4e0a\u8f93\u5165\u67e5\u8be2\u6761\u4ef6\uff08\u901a\u79f0 Query By Example\uff1bQBE\uff09<\/strong>\uff0c\u4ee5\u53d6\u5f97\u7528\u6237\u7684\u67e5\u8be2\u8303\u56f4\u6570\u636e\u3002<\/p>\n<p>\u7528\u6237\u7684\u67e5\u8be2\u6570\u636e\u4f1a\u7ec4\u6210\u4e00\u4e32 \u3010WHERE \u6761\u4ef6\u3011\uff0c\u5e76\u7f6e\u5165\u8bbe\u5b9a\u597d\u7684\u53d8\u91cf\u4e2d\u3002\u82e5\u4f7f\u7528\u8005\u672a\u8f93\u5165\u4efb\u4f55\u6761\u4ef6\uff0c\u5373\u6309\u4e0b\u300e\u786e\u5b9a\u300f\u79bb\u5f00\u00a0CONSTRUCT\uff0c\u7cfb\u7edf\u4e5f\u4f1a\u81ea\u52a8\u4e8e\u6b64\u53d8\u91cf\u4e2d\u8865\u5165\u00a01=1\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"767\" height=\"309\" class=\"wp-image-8293\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-226.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<ul>\n<li>\u5f53\u00a0<strong>\u57df\u540dcolumn_list<\/strong>\u00a0\u4e0e\u00a0<strong>\u53d8\u91cf\u540dfield_list<\/strong>\u00a0\u76f8\u540c\u65f6\uff0c\u53ef\u4ee5\u91c7\u7528\u8bed\u6cd52<\/li>\n<li>char_variable \u4e3a\u63a5\u53d6\u7528\u6237\u8f93\u5165\u6570\u636e\u7684\u00a0<strong>\u5b57\u7b26\u4e32\u53d8\u91cf<\/strong>\uff08\u5efa\u8bae\u4ee5 STRING \u683c\u5f0f\u53d8\u91cf\u63a5\u53d6\uff09<\/li>\n<li>column_list \u4e3a\u5bf9\u5e94\u5230\u8868\u683c\uff08TABLE\uff09\u7684\u57df\u540d\u6e05\u5355\uff08\u9017\u53f7\u9694\u5f00\uff09<\/li>\n<li>field_list \u4e3a\u753b\u9762\uff08WINDOW \u6216\u662f FORM\uff09\u4e0a\u7684\u5b57\u6bb5\u4ee3\u7801\u6e05\u5355\uff08\u9017\u53f7\u9694\u5f00\uff09<\/li>\n<li>\u82e5\u6709\u589e\u52a0\u00a0<strong>\u63a7\u5236\u533a\u6bb5<\/strong>\u00a0(\u5982ON ACTION\u7b49)\uff0c\u5219\u5c31\u8981\u52a0\u4e0aEND CONSTRUCT<\/li>\n<\/ul>\n<p>\u8bed\u6cd51\u793a\u4f8b\uff1a<\/p>\n<p>CONSTRUCT BY NAME l_str ON employee, salary<\/p>\n<p>ON IDLE 10<\/p>\n<p>EXIT PROGRAM<\/p>\n<p>END CONSTRUCT<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"184\" class=\"wp-image-8294\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-227.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u7ecf\u8fc7\u4e0a\u56fe\u7528\u6237\u8f93\u5165\u7684\u6761\u4ef6\uff0c\u5728\u7a0b\u5e8f\u4e2d\u8fdb\u884c\u4e86\u62fc\u63a5\uff0c\u5f62\u6210\u4e00\u4e2a\u3010WHERE \u6761\u4ef6\u3011\uff1a<\/p>\n<p>l_str = &#8220;employee=&#8217;1000&#8243; AND salary&gt;30000&#8221;<\/p>\n<p>\u540e\u7eed\u5728\u7ec4 SQL \u6307\u4ee4\u65f6\uff0c\u5373\u53ef\u901a\u8fc7\u6b64\u53d8\u91cf\u7ec4\u51fa\u7b26\u5408\u6761\u4ef6\u7684 SQL \u67e5\u8be2\u6307\u4ee4\u3002<\/p>\n<h2>PREPARE\uff1a\u5c06\u3010SQL\u5b57\u7b26\u4e32\u3011\u8f6c\u6210\u3010\u53ef\u6267\u884cSQL\u3011<\/h2>\n<p>\u82e5\u5df2\u7ecf\u5f97\u5230\u4e00\u4e2a\u5b8c\u6574\u7684\u3010WHERE \u6761\u4ef6\u3011\u540e\uff0c\u63a5\u4e0b\u6765\u5373\u53ef\u5c06\u6b64\u6761\u4ef6\uff0c\u7ec4\u5408\u6210 SQL \u5b57\u7b26\u4e32\uff0c\u518d\u8f6c\u6362\u4e3a\u4e00\u4e2a\u5b8c\u6574\u4e14\u53ef\u4ee5\u6293\u53d6\u7b26\u5408\u6761\u4ef6\u7684 SQL \u6307\u4ee4\u3002<\/p>\n<p>\u6267\u884c\u5b8c\u00a0CONSTRUCT\u00a0\u540e\uff0c\u7cfb\u7edf\u53ea\u80fd\u5f97\u5230\u4e00\u4e2a SQL \u5b57\u7b26\u4e32\uff0c\u5e76\u975e\u4e3a\u300e\u53ef\u6267\u884c\u7684\u6307\u4ee4\u300f\uff0c\u56e0\u6b64\u5fc5\u987b\u901a\u8fc7\u00a0PREPARE\u00a0\u6307\u4ee4\uff0c\u5c06\u6b64 SQL \u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u300e\u53ef\u6267\u884c\u7684 SQL \u6307\u4ee4\u300f\u3002<\/p>\n<p>PREPARE\u00a0\u4f1a\u5c06\u5b57\u7b26\u4e32\u4f20\u5165\u6570\u636e\u5e93\u67e5\u6838\u8bed\u6cd5\u7684\u6b63\u786e\u6027\uff0c\u518d\u56de\u4f20\u4e00\u4e2a\u00a0prepared-id\u00a0\u540e\u7eed\u8c03\u7528\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"117\" class=\"wp-image-8295\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-228.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<ul>\n<li><strong>statement-name<\/strong>\u00a0\u662f\u4e00\u4e2a\u00a0PREPARE\u00a0\u5b8c\u6210\u540e\u7684\u00a0<strong>\u53ef\u6267\u884cSQL\uff08prepared-id\uff09<\/strong><\/li>\n<li>\u6267\u884c\u00a0PREPARE\u00a0\u6307\u4ee4\u524d\u5fc5\u987b\u5148\u62fc\u63a5\u597d SELECT \u8bed\u53e5\u3002<\/li>\n<\/ul>\n<p>LET l_sql = &#8220;SELECT * FROM employee_file&#8221;,<\/p>\n<p>&#8220;WHERE&#8221;, l_str # l_str \u662f\u7ecf\u8fc7 CONSTRUCT \u5f97\u5230\u7684\u3010WHERE\u6761\u4ef6\u3011<\/p>\n<p>PREPARE emp_pre FROM l_sql<\/p>\n<h2>FREE\uff1a\u91ca\u653e PREPARE \u7684\u8bb0\u5f55<\/h2>\n<p>FREE \u7528\u4e8e\u00a0<strong>\u91ca\u653e PREPARE \u7684\u8bb0\u5f55<\/strong>\u3002<br \/>\n\u8bed\u6cd5\uff1aFREE statement-name<\/p>\n<p>LET l_str = &#8221; employee=&#8217;1000&#8242; AND salary&gt;&#8217;30000&#8242; &#8221;<\/p>\n<p>LET l_sql = &#8221; SELECT * FROM employee_file WHERE &#8220;, l_str<\/p>\n<p>PREPARE emp_pre FROM l_sql<\/p>\n<p>&#8230;<\/p>\n<p>FREE emp_pre<\/p>\n<h2>\u6570\u636e\u7684\u67e5\u8be2<\/h2>\n<p>Genero FGL \u4e2d\u6709\u4e24\u79cd\u67e5\u8be2\u7528\u7684\u6307\u6807\uff08CURSOR\uff09\u53ef\u4ee5\u8fd0\u7528\u5728\u8d44\u6599\u7684\u67e5\u8be2<\/p>\n<ol>\n<li><strong>SCROLLING CURSOR<\/strong><\/li>\n<li><strong>Non-SCROLLING CURSOR<\/strong><\/li>\n<\/ol>\n<p>SCROLLING CURSOR \u901a\u5e38\u8fd0\u7528\u5728\u00a0<strong>\u5355\u6587\u4ef6\u63a7\u5236 \u6216 \u67e5\u8be2\u7c7b<\/strong>\u00a0\u7684\u7a0b\u5e8f\uff0c\u5982\u300e\u4e2a\u4eba\u8d44\u6599\u8868\u300f\u822c\u7684\u4f5c\u4e1a\uff0c\u53ef\u4ee5\u968f\u673a\u6293\u53d6\u6570\u636e\uff0c\u4e00\u6b21\u4e00\u7b14\uff0c\u518d\u5904\u7406\u5b8c\u540e\u53ef\u4ee5\u9009\u62e9\u00a0<strong>\u5f80\u524d\u4e00\u6bd4<\/strong>\u3001<strong>\u5f80\u540e\u4e00\u7b14<\/strong>\u00a0\u6216\u00a0<strong>\u5f80\u8fd9\u4e2a\u67e5\u8be2\u5e8f\u5217\u4e2d\u7684\u4efb\u4f55\u4e00\u7b14\u6570\u636e<\/strong>\u00a0\u79fb\u52a8\u7684\u6307\u9488\uff08CURSOR\uff09\u3002<\/p>\n<p>DECLARE cursor_id SCROLL CURSOR [WITH HOLD] FOR sql statement<\/p>\n<p>OPEN cursor_id [USING value]<\/p>\n<p>FETCH [first|last|previous|next| cursor_id INTO variable<\/p>\n<p>CLOSE cursor_id<\/p>\n<p>Non-SCROLLING CURSOR \u901a\u5e38\u8fd0\u7528\u5728\u00a0<strong>\u53cc\u6587\u4ef6\u63a7\u5236\u7a0b\u5e8f \u6216 \u62a5\u8868<\/strong>\u00a0\u7a0b\u5e8f\uff0c\u5982\u300e\u4e2a\u4eba\u51fa\u7f3a\u52e4\u7edf\u8ba1\u8868\u300f\u822c\u7684\u4f5c\u4e1a\uff0c\u6293\u53d6\u6570\u636e\u662f\u00a0<strong>\u4f9d\u5e8f (seguential)<\/strong>\u00a0\u7684\u65b9\u5f0f\uff0c\u4e00\u6b21\u53ef\u4ee5\u5c06\u5408\u6761\u4ef6\u8981\u6c42\u7684\u8d44\u6599\u4e00\u7b14\u63a5\u7740\u4e00\u7b14\u7684\u6293\u51fa\uff0c\u76f4\u5230\u8d44\u6599\u5168\u6570\u6293\u5b8c\uff08\u6216\u88ab\u5f3a\u5236\u7ec8\u6b62\uff09\u4e3a\u6b62\u3002<\/p>\n<p>DECLARE cursor_id CURSOR [WITH HOLD] FOR sql statement<\/p>\n<p>FOREACH cursor_id<\/p>\n<p>[USING value]<\/p>\n<p>[INTO variable ]<\/p>\n<p>&#8230;<\/p>\n<p>END FOREACH<\/p>\n<h3>SCROLLING CURSOR\uff08DECLARE\u3001OPEN\u3001FETCH\u3001CLOSE\uff09<\/h3>\n<p>\u8bf4\u660e\uff1a\u901a\u5e38\u7528\u4e8e\u00a0<strong>\u67e5\u8be2\u7a0b\u5e8f<\/strong>\uff0c\u53ef\u4ee5\u00a0<strong>\u968f\u5373\u6293\u53d6\u8d44\u6599<\/strong>\u3002<\/p>\n<ol>\n<li>\u901a\u8fc7 DECLARE \u5b9a\u4e49<\/li>\n<li>\u5229\u7528 OPEN \u5f00\u542f\u8be5 CURSOR<br \/>\n\u4f8b\uff1aOPEN test01_cursor<\/li>\n<li>\u901a\u8fc7\u00a0FETCH cursor_name INTO \u53d8\u91cf\u00a0\u6293\u53d6\u8d44\u6599<\/li>\n<\/ol>\n<p>DECLARE \u6982\u8ff0<br \/>\n\u8bed\u6cd51\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u77e5\u7684SQL\u8bed\u53e5<\/strong>\u00a0\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name SCROLL CURSOR [WITH HOLD]<\/p>\n<p>FOR sql_statement<\/p>\n<p>\u8bed\u6cd52\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u58f0\u660e\u7684PREPARED ID<\/strong>\u00a0\u6765\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name SCROLL CURSOR [WITH HOLD]<\/p>\n<p>FOR prepared_id<\/p>\n<p>\u8bed\u6cd53\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u77e5\u7684STRING\u8bed\u53e5<\/strong>\u00a0\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name SCROLL CURSOR [WITH HOLD]<\/p>\n<p>FROM string-expression<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1309\" height=\"420\" class=\"wp-image-8296\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-229.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-229.png 1309w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-229-768x246.png 768w\" sizes=\"auto, (max-width: 1309px) 100vw, 1309px\" \/><\/p>\n<p>OPEN \u6982\u8ff0<br \/>\n\u8bed\u6cd5\uff1a<\/p>\n<p>OPEN cursor_name [USING \u53d8\u91cf\u540d\u79f0]<\/p>\n<ul>\n<li>\u672c\u6307\u4ee4\u53ef\u7528 STATUS \u6765\u68c0\u67e5\u662f\u5426\u6267\u884c\u6210\u529f<\/li>\n<li><strong>\u4f7f\u7528 cursor \u4e4b\u524d\u8981\u5148 OPEN CURSOR<\/strong>\uff0c\u5f00\u542f\u6e38\u6807<\/li>\n<li>\u6b64\u8bed\u53e5\u4ec5\u51b3\u5b9a\u7b26\u5408\u7684\u6570\u636e\uff0c\u5e76\u4e0d\u662f\u771f\u6b63\u4ece\u6570\u636e\u5e93\u4e2d\u6293\u53d6\u6570\u636e<\/li>\n<\/ul>\n<p>\u793a\u4f8b\uff1a<\/p>\n<p>LET g_sql = &#8220;SELECT * FROM cta_file WHERE ROWID = ?&#8221;<\/p>\n<p>DECLARE cta_cl CURSOR FROM g_sql<\/p>\n<p>:<\/p>\n<p>OPEN cta_cl USING l_ata01<\/p>\n<p>FETCH \u6982\u8ff0<br \/>\n\u8bed\u6cd5\uff1a<\/p>\n<p>FETCH cursor_id INTO program_variable<\/p>\n<p>\u5f53\u58f0\u660e\u4e3a SCROLLING CURSOR \u65f6\uff0c\u53ef\u4ee5\u914d\u5408\u4ee5\u4e0b\u79fb\u52a8 Cursor \u7684\u6307\u4ee4\uff1a<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"1033\" height=\"300\" class=\"wp-image-8297\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-230.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-230.png 1033w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-230-768x223.png 768w\" sizes=\"auto, (max-width: 1033px) 100vw, 1033px\" \/><br \/>\n\u4e0d\u540c FETCH \u6307\u4ee4\u4e0b CURSOR \u52a8\u4f5c\u793a\u610f\u56fe\uff1a<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"833\" class=\"wp-image-8298\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-231.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-231.png 945w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-231-768x677.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/p>\n<p>LET l_sql = &#8220;SELECT * FROM employee_file&#8221;, &#8220;WHERE&#8221;, l_str<\/p>\n<p>PREPARE emp_pre FROM l_sql<\/p>\n<p>DECLARE emp_cus SCROLL CURSOR<\/p>\n<p>[WITH HOLD] FOR emp_pre<\/p>\n<p>OPEN emp_cus # OPEN CURSOR<\/p>\n<p>FETCH FIRST emp_cus INTO l_emp.* #\u6293\u7b2c\u4e00\u7b14<\/p>\n<p>CLOSE \u6982\u8ff0<br \/>\n\u8bed\u6cd5\uff1a<\/p>\n<p>CLOSE cursor_id<\/p>\n<p>\u8bf4\u660e\uff1a\u5173\u95ed\u5e76\u91ca\u653e\u6307\u6807\uff08CURSOR\uff09\u7684\u50a8\u5b58\u7a7a\u95f4<\/p>\n<p>\u7efc\u5408\u793a\u4f8b<\/p>\n<p>DATABASE ds #\u58f0\u660e\u6570\u636e\u5e93<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a STRING<\/p>\n<p>DEFINE b,c CHAR(10)<\/p>\n<p>&nbsp;<\/p>\n<p># \u4f7f\u7528 SQL\u8bed\u53e5 \u58f0\u660e CURSOR<\/p>\n<p>DECLARE test01 SCROLL CURSOR FOR<\/p>\n<p>SELECT zz01 FROM zz_file WHERE zz01 = &#8220;axmt410&#8221;<\/p>\n<p>OPEN test01<\/p>\n<p>FETCH FIRST test01 INTO b #\u5c06cursor\u6307\u5411\u7b26\u5408\u6761\u4ef6\u7684\u7b2c\u4e00\u7b14<\/p>\n<p>DISPLAY b<\/p>\n<p>&nbsp;<\/p>\n<p>LET c = &#8220;axmt410&#8221;<\/p>\n<p>LET a = &#8220;SELECT zz01 FROM zz_file WHERE zz01='&#8221;,c CLIPPED,&#8221;&#8216; &#8221;<\/p>\n<p># \u4f7f\u7528 STRING\u8bed\u53e5 \u58f0\u660e CURSOR<\/p>\n<p>DECLARE test02 SCROLL CURSOR FROM a<\/p>\n<p>OPEN test02<\/p>\n<p>FETCH LAST test02 INTO b #\u5c06cursor\u6307\u5411\u7b26\u5408\u6761\u4ef6\u7684\u6700\u540e\u4e00\u7b14<\/p>\n<p>DISPLAY b<\/p>\n<p>END MAIN<\/p>\n<h3>Non-SCROLLING CURSOR\uff08DECLARE\u3001FOREACH\uff09<\/h3>\n<p>\u8bf4\u660e\uff1a\u5e38\u8fd0\u7528\u5728\u00a0<strong>\u62a5\u8868\u7a0b\u5f0f<\/strong>\uff0c\u6293\u53d6\u8d44\u6599\u7684\u65b9\u5f0f\u662f\u00a0<strong>\u4f9d\u5e8f (seguential)<\/strong>\u00a0\u7684\u65b9\u5f0f\u3002<\/p>\n<ol>\n<li>\u901a\u8fc7 DECLARE \u5b9a\u4e49<\/li>\n<li>\u5229\u7528 FOREACH \u6307\u4ee4\u6293\u8d44\u6599<\/li>\n<\/ol>\n<p>DECLARE \u6982\u8ff0<br \/>\n\u8bed\u6cd51\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u77e5\u7684SQL\u8bed\u53e5<\/strong>\u00a0\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name CURSOR [WITH HOLD]<\/p>\n<p>FOR sql_statement<\/p>\n<p>\u8bed\u6cd52\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u58f0\u660e\u7684 PREPARED_ID<\/strong>\u00a0\u6765\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name CURSOR [WITH HOLD]<\/p>\n<p>FOR prepared_id<\/p>\n<p>\u8bed\u6cd53\uff1a\u4f7f\u7528\u00a0<strong>\u5df2\u77e5\u7684STRING\u8bed\u53e5<\/strong>\u00a0\u8fdb\u884c CURSOR \u58f0\u660e<\/p>\n<p>DECLARE cursor_name CURSOR [WITH HOLD]<\/p>\n<p>FROM string-expression<\/p>\n<p>FOREACH (LOOP) \u6982\u8ff0<br \/>\n\u6ce8\uff1a<strong>\u53ea\u80fd\u7528\u4e8e Non_Scrolling Cursor<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"218\" class=\"wp-image-8299\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-232.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-232.png 815w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-232-768x205.png 768w\" sizes=\"auto, (max-width: 815px) 100vw, 815px\" \/><br \/>\n\u58f0\u660e\u5b8c CURSOR \u540e\u5373\u53ef\u7528 FOREACH \u8fdb\u884c\u5c06\u6240\u6709\u7b26\u5408\u6761\u4ef6\u7684\u6570\u636e\u4e00\u7b14\u4e00\u7b14\u7684\u6293\u53d6\u51fa\u6765\u5904\u7406\uff0c\u4e0d\u9700\u8981 OPEN\u3002<\/p>\n<p><strong>FOREACH<\/strong>\u00a0\u4e0e\u00a0<strong>FETCH<\/strong>\u00a0\u7684\u4e0d\u540c<\/p>\n<ul>\n<li>FOREACH \u5177\u6709\u5faa\u73af\u5904\u7406\u7684\u67b6\u6784\uff0c\u800c FETCH \u5219\u5fc5\u987b\u914d\u5408 WHILE \u5faa\u73af\u4e00\u8d77\u7528\u3002<\/li>\n<li>FOREACH \u53ea\u80fd\u5faa\u5e8f\u5904\u7406\uff0c\u800c FETCH \u53ef\u505a\u968f\u673a\u8df3\u8dc3\u7684\u9009\u53d6\u3002<\/li>\n<li>\u6267\u884c FETCH \u524d\u5fc5\u987b OPEN\uff0c\u7ed3\u675f\u65f6 CLOSE \u5173\u95ed\u5e76\u91ca\u653eCURSOR<br \/>\n<strong>FOREACH \u6307\u4ee4\u53ef\u81ea\u52a8\u5f00\u542f\u4e0e\u5173\u95ed CURSOR<\/strong>\uff0c\u65e0\u9700\u624b\u52a8 OPEN \u548c CLOSE\u3002<\/li>\n<\/ul>\n<p>\u7efc\u5408\u793a\u4f8b<\/p>\n<p>LET l_sql = &#8220;SELECT * FROM employee_file&#8221;, &#8220;WHERE&#8221;, l_str<\/p>\n<p>PREPARE emp_pre FROM l_sql<\/p>\n<p>DECLARE emp_cus CURSOR FOR emp_pre # \u4f7f\u7528 prepare_id \u6765\u58f0\u660e cursor<\/p>\n<p>FOREACH emp_cus INTO l_emp.* #\u5faa\u5e8f\u6293\u8d44\u6599<\/p>\n<p>IF l_emp.salary &gt; 80000 THEN<\/p>\n<p>EXIT FOREACH<\/p>\n<p>END IF<\/p>\n<p>END FOREACH<\/p>\n<p>MAIN<\/p>\n<p>DEFINE clist ARRAY[200] OF RECORD<\/p>\n<p>cnum INTEGER,<\/p>\n<p>cname CHAR(50)<\/p>\n<p>END RECORD<\/p>\n<p>&nbsp;<\/p>\n<p>DEFINE I INTEGER<\/p>\n<p>DEFINE str STRING<\/p>\n<p>DEFINE c_name CHAR(50)<\/p>\n<p>&nbsp;<\/p>\n<p>DATABASE stores<\/p>\n<p>&nbsp;<\/p>\n<p>LET c_name = ARG_VAL(1)<\/p>\n<p>&nbsp;<\/p>\n<p>LET str = &#8220;SELECT customer_num, cust_name FROM customer WHERE cname = ?&#8221;<\/p>\n<p>PREPARE prepare_id FROM str<\/p>\n<p>DECLARE c1 CURSOR FOR prepare_id # \u4f7f\u7528 prepare_id \u6765\u58f0\u660e cursor<\/p>\n<p>LET i = 1<\/p>\n<p>FOREACH c1 USING c_name INTO clist[i].*<\/p>\n<p>LET i = i + 1<\/p>\n<p>END FOREACH<\/p>\n<p>&nbsp;<\/p>\n<p>DISPLAY &#8220;Number of rows found: &#8220;, i<\/p>\n<p>END MAIN<\/p>\n<h2>\u6570\u636e\u7684\u9501\u5b9a<\/h2>\n<h3>LOCKING CURSOR\uff08DECLARE\u3001OPEN\u3001FETCH\u3001CLOSE\uff09<\/h3>\n<p>\u5f53\u8981\u8fdb\u884c\u6570\u636e\u7684\u4fee\u6539 (UPDATE) \u65f6\uff0c\u4e3a\u9632\u6b62\u591a\u4eba\u540c\u65f6\u4fee\u5230\u540c\u4e00\u7b14\u6570\u636e\uff0c\u5e94\u5f53\u8003\u8651\u5728\u5f00\u59cb\u4fee\u6539\u524d\u8fdb\u884c\u00a0<strong>\u6570\u636e\u9501\u5b9a\uff08LOCK\uff09<\/strong>\uff0c\u4ee5\u786e\u4fdd\u540c\u65f6\u95f4\u53ea\u6709\u4e00\u4eba\u80fd\u53d6\u5f97\u4fee\u6539\u6743\uff0cGenero FGL \u4e2d\u5ef6\u7eed INFORMIX 4GL \u7684\u4f5c\u6cd5\uff0c\u91c7\u7528\u00a0<strong>LOCKING CURSOR<\/strong>\u00a0\u5bf9\u6570\u636e\u8fdb\u884c\u9501\u5b9a\u3002<\/p>\n<p><strong>LOCKING CURSOR<\/strong>\u00a0\u4e5f\u79f0\u00a0<strong>FOR UPDATE CURSOR<\/strong>\u3002\u7528\u4e8e\u5728\u6570\u636e\u66f4\u65b0\u7a0b\u5e8f\u6bb5\uff0c\u5c06\u6570\u636e\u8fdb\u884c\u4e00\u4e2a\u4e0a\u9501\u7684\u52a8\u4f5c\uff0c\u4ee5\u907f\u514d\u4e24\u7ec4\u4ee5\u4e0a\u7684\u8054\u673a\u540c\u65f6\u518d\u66f4\u65b0\u540c\u4e00 TABLE \u4e0b\u7684\u540c\u4e00\u7b14\u6570\u636e\u3002\u5982\u679c\u672a\u4f5c LOCK \u7684\u52a8\u4f5c\uff0c\u53ef\u80fd\u518d\u6293\u53d6\u6570\u636e\u7684\u540c\u65f6\uff0c\u6709\u5176\u4ed6\u4eba\u6b63\u5728\u8fdb\u884c\u6570\u636e\u4fee\u6539\u3002\u6b64 CURSOR \u4e0d\u5c5e\u4e8e\u6570\u636e\u67e5\u8be2\u7684 CURSOR\uff0c\u800c\u9700\u5217\u4e3a\u66f4\u65b0\u7684 CURSOR\u3002<\/p>\n<p>DECLARE cursor_name CURSOR FOR sql statement FOR UPDATE [NOWAIT]<\/p>\n<p>OPEN cursor_id [USING value]<\/p>\n<p>FETCH cursor_id INTO variable<\/p>\n<p>CLOSE cursor_id<\/p>\n<p>\u8bf4\u660e\uff1a\u901a\u5e38\u8fd0\u7528\u5728 Update\u7a0b\u5e8f\uff0c\u505a\u8d44\u6599Lock\u7684\u52a8\u4f5c\u3002<\/p>\n<ol>\n<li>\u901a\u8fc7 DECLARE \u5b9a\u4e49<\/li>\n<li>\u901a\u8fc7 OPEN \u5f00\u542f\u8be5CURSOR<\/li>\n<li>\u901a\u8fc7\u00a0FETCH cursor_name INTO \u53d8\u91cf\u00a0\u6293\u53d6\u8d44\u6599<\/li>\n<\/ol>\n<p>DECLARE \u6982\u8ff0<\/p>\n<p>DECLARE cursor_name CURSOR FOR select_statement FOR UPDATE [NOWAIT]<\/p>\n<ul>\n<li>\u6b64\u5904\u4e0e SCROLL CURSOR \u6216 Non-SCROLL CURSOR \u6700\u5927\u7684\u5dee\u5f02\u5728\u4e8e SQL \u67e5\u8be2\u6307\u4ee4\u7684<br \/>\n\u6700\u540e\u987b\u52a0\u4e0aFOR UPDATE(ORACLE \u6570\u636e\u5e93\u9700\u518d\u52a0\u4e0a\u00a0NOWAIT)\uff0c\u4ee5\u6807\u660e\u6b64 CURSOR \u4e3a LOCKING CURSOR\u3002<\/li>\n<li>\u6b64\u5904\u4ea6\u53ef\u4f7f\u7528 FROM char_variable \u65b9\u5f0f\u6765\u5b9a\u4e49 SQL \u67e5\u8be2\u6307\u4ee4\u3002<\/li>\n<\/ul>\n<p>OPEN \u6982\u8ff0<\/p>\n<p>OPEN cursor_id<\/p>\n<p>FETCH \u6982\u8ff0<\/p>\n<p>FETCH cursor_id INTO program_variable<\/p>\n<ul>\n<li>\u6b64\u6307\u4ee4\u9664\u4ece\u6570\u636e\u5e93\u4e2d\u53d6\u5f97\u6570\u636e\u5916\uff0c\u5728 LOCKING CURSOR \u7684\u72b6\u6001\u4e0b\uff0c\u8fd8\u4f1a\u5c06\u6240\u6293\u53d6\u5230\u7684\u6570\u636e\u9501\u4f4f\uff0c\u76f4\u5230\u7a0b\u5e8f\u6267\u884c\u00a0CLOSE cursor_id\u00a0\u7684\u6307\u4ee4\u624d\u4f1a\u91ca\u653e\u3002<\/li>\n<\/ul>\n<p>CLOSE \u6982\u8ff0<\/p>\n<p>CLOSE cursor_id<\/p>\n<ul>\n<li>\u5173\u95ed\u5e76\u91ca\u653e CURSOR\uff0c<strong>\u5f85\u91ca\u653e\u5b8c\u6210\u540e\uff0c\u7cfb\u7edf\u624d\u4f1a\u5c06\u88ab\u9501\u5b9a\u7684\u6570\u636e\u91ca\u653e<\/strong>\u3002<\/li>\n<\/ul>\n<p>\u7efc\u5408\u6848\u4f8b<\/p>\n<p>LET l_sql = &#8220;SELECT * FROM employee_file&#8221;,<\/p>\n<p>&#8220;WHERE no = ? FOR UPDATE&#8221;<\/p>\n<p>PREPARE emp_pre FROM l_sql<\/p>\n<p>DECLARE emp_cl CURSOR FOR emp_pre<\/p>\n<p>OPEN emp_cus USING l_no<\/p>\n<p>FETCH emp_cus INTO l_emp.* #\u53ea\u6293\u4e00\u7b14\u8d44\u6599lock<\/p>\n<p>DATABASE ds<\/p>\n<p>MAIN<\/p>\n<p>DEFINE g_gav01 LIKE gav_file.gav01<\/p>\n<p>DEFINE g_gav08 LIKE gav_file.gav08<\/p>\n<p>&nbsp;<\/p>\n<p>LET g_forupd_sql = &#8220;SELECT * from gav_file WHERE gav01=? AND gav08=? &#8220;,<\/p>\n<p>&#8220;FOR UPDATE&#8221;<\/p>\n<p>DECLARE p_per_lock_u CURSOR FROM g_forupd_sql<\/p>\n<p>OPEN p_per_lock_u USING g_gav01,g_gav08<\/p>\n<p>IF STATUS THEN<\/p>\n<p>CLOSE p_per_lock_u<\/p>\n<p>RETURN<\/p>\n<p>END IF<\/p>\n<p>FETCH p_per_lock_u INTO g_gav_lock.*<\/p>\n<p>IF SQLCA.sqlcode THEN<\/p>\n<p>CLOSE p_per_lock_u<\/p>\n<p>RETURN<\/p>\n<p>END IF<\/p>\n<p>CLOSE p_per_lock_u<\/p>\n<p>END MAIN<\/p>\n<h3>USING\u7684\u4f7f\u7528\u65f6\u673a<\/h3>\n<p>\u6b64\u5904\u7684\u300eUSING\u300f\u548c\u4e4b\u524d\u5173\u4e8e \u53d8\u91cf\u683c\u5f0f\u8f93\u51fa\u7684 USING \u610f\u4e49\u4e0d\u540c\u3002<\/p>\n<p>\u5728\u7ec4\u6210\u67e5\u8be2\u7684 SQL \u6307\u4ee4\u65f6\uff0c\u6709\u65f6\u4e00\u5f00\u59cb\u4e0d\u77e5\u9053\u8981\u67e5\u8be2\u7684\u6570\u636e\u662f\u4ec0\u4e48 \uff0c\u56e0\u6b64\u300e\u53ef\u5728 SQL \u67e5\u8be2\u6307\u4ee4\u4e2d\u4f7f\u7528\u95ee\u53f7\u00a0?\uff0c\u540e\u7eed\u8981\u4f7f\u7528 CURSOR \u65f6\uff0c\u518d\u5c06\u5df2\u77e5\u503c\u7528 USING \u4f20\u5165\u300f\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<ul>\n<li>SQL \u8bed\u53e5\u4e2d\u53ef\u4ee5\u5b9a\u4e49\u591a\u4e2a\u95ee\u53f7?\uff1b\u4f7f\u7528 USING \u7ed9\u503c\u65f6\u9700\u4f9d\u5e8f\u5bf9\u5e94\uff0c\u5e76\u7528\u9017\u53f7\u9694\u5f00<\/li>\n<li>USING \u5fc5\u9700\u8ddf\u5728 OPEN \u540e (Scroll Cursor \u53ca Locking Cursor\u79cd)\u3001FOREACH \u540e (Nonscroll Cursor) \u6216 EXECUTE \u6307\u4ee4\u540e (\u5927\u91cf\u6267\u884c SQL Cursor)<\/li>\n<\/ul>\n<p>\u524d\u9762\u7684\u6848\u4f8b\u4e2d\u90fd\u7528\u5230\u4e86 USING\u3002<\/p>\n<h2>TRANSACTION\uff1a\u4e8b\u52a1\u63a7\u5236<\/h2>\n<p>\u8bf4\u660e\uff1a\u9700\u8981\u591a\u8868\u683c\u7684\u540c\u65f6\u8fde\u52a8\u65f6\uff0c\u53ef\u91c7\u7528\u00a0<strong>TRANSACTION<\/strong>\u00a0\u4f5c\u6cd5\u3002<\/p>\n<ol>\n<li>\u901a\u8fc7\u00a0BEGIN WORK\u00a0\u58f0\u660e TRANSACTION \u5f00\u59cb<\/li>\n<li>\u6267\u884c INSERT\u3001UPDATE\u3001DELETE \u7b49\u6307\u4ee4<\/li>\n<li>\u901a\u8fc7\u00a0COMMIT WORK\u00a0\u6216\u00a0ROLLBACK WORK\u00a0\u58f0\u660e TRANSACTION \u7ed3\u675f<\/li>\n<\/ol>\n<p>\u6ce8\u610f<\/p>\n<ul>\n<li>BEGIN WORK\u00a0\u5f00\u59cb\u540e\uff0c\u4e00\u5b9a\u8981\u6709\u00a0COMMIT WORK\u00a0\u6216\u00a0ROLLBACK WORK<br \/>\n\u4e5f\u5c31\u662f\u5fc5\u987b\u505a\u51fa\u6570\u636e\u662f\u5426\u5199\u5165\u7684\u5224\u65ad<\/li>\n<li>TRANSACTION \u533a\u4e2d\u7684\u7a0b\u5e8f\u5c3d\u91cf\u4e0d\u8981\u592a\u957f\uff0c\u4ee5\u514d\u5f71\u54cd\u9700\u8981\u8c03\u7528\u540c\u7b14\u6570\u636e\u7684\u5176\u4ed6\u7528\u6237<br \/>\n\uff08\u4f46\u4f7f\u7528\u8005\u672c\u8eab\u4e0d\u53d7\u5f71\u54cd\uff0c\u672a COMMIT WORK \u524d\u4ecd\u53ef\u8c03\u7528\u5df2\u53d8\u66f4\u6570\u636e\uff09<\/li>\n<li>\u6709\u4e9b DDL \u6307\u4ee4 (\u5982\u00a0CREATE TABLE) \u4f1a\u6709\u81ea\u52a8\u00a0COMMIT WORK\u00a0\u529f\u80fd<\/li>\n<li>\u5f53\u00a0COMMIT WORK\u00a0\u6216\u00a0ROLLBACK WORK\u00a0\u65f6\uff0c\u4f1a\u81ea\u52a8\u5173\u95ed\u672a\u58f0\u660e\u300e<strong>WITH HOLD<\/strong>\u300f\u7684 CURSOR<\/li>\n<\/ul>\n<p>BEGIN WORK<\/p>\n<p>&#8230;<\/p>\n<p>[INSERT &#8230;]<\/p>\n<p>[UPDATE &#8230;]<\/p>\n<p>&#8230;<\/p>\n<p>IF SQLCA.SQLCODE THEN #SQL\u6267\u884c\u7ed3\u679c<\/p>\n<p>ROLLBACK WORK<\/p>\n<p>ELSE<\/p>\n<p>COMMIT WORK<\/p>\n<p>END IF<\/p>\n<h2>EXECUTE\uff1a\u5927\u91cf\u6267\u884c\u540c\u4e00SQL\u6307\u4ee4<\/h2>\n<p>\u5f53\u7cfb\u7edf\u8981\u6267\u884c\u5927\u91cf\u7684\u540c\u4e00 SQL \u6307\u4ee4\uff0c\u4f8b\u5982\u8981\u5728\u5de5\u4f5c\u6570\u636e\u4e2d\u8fde\u7eed INSERT \u5341\u5e74\u7684\u5de5\u4f5c\u65e5\u6570\u636e\uff0c\u53ef\u4ee5\u7528 FOR \u5faa\u73af\u5b9e\u73b0\u4ee5\u4e0b\u8bed\u53e5\uff0c\u4f46\u6570\u636e\u91cf\u5927\u65f6\u6548\u7387\u4f1a\u6bd4\u8f83\u4f4e\u3002<\/p>\n<p>INSERT INTO work_date VALUES (&#8220;2005\/07\/01&#8221;, &#8220;Friday&#8221;, &#8220;Weekday&#8221;)<\/p>\n<p>\u82e5\u5bf9\u7a0b\u5e8f\u6709\u6548\u7387\u8981\u6c42\uff0c\u5219\u53ef\u4ee5\u8003\u8651\u6539\u7528\u300e<strong>EXECUTE<\/strong>\u300f\u4f5c\u6cd5\u3002<\/p>\n<p>\u8bf4\u660e\uff1a\u9700\u8981\u5927\u91cf\u6267\u884c\u540c\u4e00SQL\u6307\u4ee4\u3002<\/p>\n<ul>\n<li>EXECUTE \u53ef\u4ee5\u5e94\u7528\u5728 SELECT\u3001UPDATE\u3001INSERT\u3001DELETE \u7b49\u5904<\/li>\n<li>\u4f7f\u7528 EXECUTE \u65f6\uff0c\u5c3d\u91cf\u5c06\u4ee5 USING \u65b9\u5f0f\u4f20\u503c<\/li>\n<\/ul>\n<p>FUNCTION update_customer_name( key, name )<\/p>\n<p>DEFINE key INTEGER<\/p>\n<p>DEFINE name CHAR(10)<\/p>\n<p>PREPARE s1 FROM &#8220;UPDATE customer SET name=? WHERE customer_num=?&#8221;<\/p>\n<p>EXECUTE s1 USING name, key<\/p>\n<p>FREE s1<\/p>\n<p>END FUNCTION<\/p>\n<h2>PUT\u2026FLUSH\uff1a\u5927\u91cf\u6267\u884c\u65b0\u589e\u6307\u4ee4<\/h2>\n<p>\u82e5\u662f\u9700\u8981\u5927\u91cf INSERT \u64cd\u4f5c\uff0c\u300eINSERT CURSOR\u300f\u6bd4 EXECUTE \u66f4\u5feb\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"325\" class=\"wp-image-8300\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-233.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-233.png 906w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-233-768x275.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><br \/>\n\u793a\u4f8b\uff1a<\/p>\n<p>MAIN<\/p>\n<p>DEFINE i INTEGER<\/p>\n<p>DEFINE rec RECORD<\/p>\n<p>key INTEGER,<\/p>\n<p>name CHAR(30)<\/p>\n<p>END RECORD<\/p>\n<p>&nbsp;<\/p>\n<p>DATABASE stock<\/p>\n<p>&nbsp;<\/p>\n<p>PREPARE is FROM &#8220;INSERT INTO item VALUES (?,?)&#8221;<\/p>\n<p>DECLARE ic CURSOR FOR is<\/p>\n<p>&nbsp;<\/p>\n<p>BEGIN WORK # \u5f00\u542f\u4e8b\u52a1<\/p>\n<p>OPEN ic<\/p>\n<p>FOR i=1 TO 100<\/p>\n<p>LET rec.key = i<\/p>\n<p>LET rec.name = &#8220;Item #&#8221; || i<\/p>\n<p>PUT ic FROM rec.*<\/p>\n<p>IF i MOD 50 = 0 THEN<\/p>\n<p>FLUSH ic<\/p>\n<p>END IF<\/p>\n<p>END FOR<\/p>\n<p>CLOSE ic<\/p>\n<p>COMMIT WORK # \u63d0\u4ea4\u4e8b\u52a1<\/p>\n<p>&nbsp;<\/p>\n<p>FREE ic<\/p>\n<p>FREE is<\/p>\n<p>END MAIN<\/p>\n<h1>ARRAY<\/h1>\n<h2>ARRAY\u7684\u5b9a\u4e49\u548c\u65b9\u6cd5<\/h2>\n<p>Genero \u7684\u6570\u7ec4\u53ef\u4ee5\u8bbe\u5b9a\u4e3a\u4e00\u7ef4\uff0c\u4e8c\u7ef4\u6216\u591a\u7ef4\u6570\u7ec4\uff0c\u5176\u8ba1\u6570\u4ece\u300e1\u300f\u5f00\u59cb\u3002\u82e5\u672a\u77e5\u6570\u7ec4\u6240\u9700\u8981\u7684\u957f\u5ea6\uff0c\u53ef\u4ee5\u5ba3\u544a\u4e3a\u52a8\u6001\u6570\u7ec4\u3002<\/p>\n<p><strong>\u56fa\u5b9a\u6570\u7ec4\uff08Static Array\uff09\u5b9a\u4e49<\/strong><\/p>\n<p>ARRAY [ intconst [,intconst [,intconst] ] ] OF datatype<\/p>\n<p><strong>\u52a8\u6001\u6570\u7ec4\uff08Dynamic Array\uff09\u5b9a\u4e49<\/strong><\/p>\n<p>DYNAMIC ARRAY [ WITH DIMENSION rank ] OF datatype<\/p>\n<p><strong>\u6570\u7ec4\u5bf9\u8c61\u53ef\u7528\u65b9\u6cd5\uff08Method\uff09\u5217\u8868<\/strong>\uff1a<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"1190\" height=\"528\" class=\"wp-image-8301\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-234.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-234.png 1190w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-234-768x341.png 768w\" sizes=\"auto, (max-width: 1190px) 100vw, 1190px\" \/><br \/>\n\u793a\u4f8b\uff1a\u5b9a\u4e49\u56fa\u5b9a\u53ca\u52a8\u6001\u6570\u7ec4<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a1 ARRAY[100] OF INTEGER #\u5b9a\u4e49\u5bb9\u91cf\u4e3a100\u7684\u56fa\u5b9a\u6570\u7ec4<\/p>\n<p>DEFINE a2 DYNAMIC ARRAY OF INTEGER #\u5b9a\u4e49\u52a8\u6001\u6570\u7ec4<\/p>\n<p>DEFINE i INTEGER<\/p>\n<p>LET i = 12<\/p>\n<p>LET a1[50] = 12456<\/p>\n<p>LET a2[5000] = 12456<\/p>\n<p>LET a2[500+i] = 12456<\/p>\n<p>END MAIN<\/p>\n<p>\u793a\u4f8b\uff1agetLength() \u548c claer()<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a DYNAMIC ARRAY OF INTEGER<\/p>\n<p>LET a[5000] = 123456<\/p>\n<p>DISPLAY a.getLength() # 5000<\/p>\n<p>CALL a.clear() #\u6e05\u7a7a\u6570\u7ec4<\/p>\n<p>DISPLAY a.getLength() # 0<\/p>\n<p>END MAIN<\/p>\n<p>\u793a\u4f8b\uff1aappendElement()<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a DYNAMIC ARRAY OF INTEGER<\/p>\n<p>LET a[10] = 10<\/p>\n<p>CALL a.appendElement()<\/p>\n<p>LET a[a.getLength()] = a.getLength()<\/p>\n<p>DISPLAY a.getLength() # 11<\/p>\n<p>DISPLAY a[10] # 10<\/p>\n<p>DISPLAY a[11] # 11<\/p>\n<p>END MAIN<\/p>\n<p>\u793a\u4f8b\uff1ainsertElement(n) \u5728\u4e0b\u6807n\u5904\u65b0\u589e\u8bb0\u5f55\uff0c\u5e76\u5c06n\u4e4b\u540e\u7684\u6570\u636e\u540e\u79fb<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a DYNAMIC ARRAY OF INTEGER<\/p>\n<p>LET a[10] = 11<\/p>\n<p>&nbsp;<\/p>\n<p>CALL a.insertElement(10) #a[10]\u65b0\u589e\u8bb0\u5f55,\u539f\u672ca[10]\u7684\u6570\u636e\u540e\u79fb<\/p>\n<p>LET a[10] = 10 #\u7ed9\u65b0\u589e\u7684\u8bb0\u5f55\u8d4b\u503c<\/p>\n<p>&nbsp;<\/p>\n<p>DISPLAY a.getLength() # 11<\/p>\n<p>DISPLAY a[10] # 10<\/p>\n<p>DISPLAY a[11] # 11<\/p>\n<p>END MAIN<\/p>\n<p>\u8303\u4f8b5\uff1adeleteElement(n) \u5220\u9664\u4e0b\u6807\u4e3an\u5904\u7684\u8bb0\u5f55<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a DYNAMIC ARRAY OF INTEGER<\/p>\n<p>LET a[10] = 9<\/p>\n<p>DISPLAY a.getLength() # 10<\/p>\n<p>CALL a.deleteElement(5)<\/p>\n<p>DISPLAY a.getLength() # 9<\/p>\n<p>DISPLAY a[9] # 9<\/p>\n<p>END MAIN<\/p>\n<p>\u793a\u4f8b\uff1a\u4e8c\u3001\u4e09\u7ef4\u6570\u7ec4\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f\uff1f<\/p>\n<p>MAIN<\/p>\n<p>DEFINE a2 DYNAMIC ARRAY WITH DIMENSION 2 OF INTEGER<\/p>\n<p>DEFINE a3 DYNAMIC ARRAY WITH DIMENSION 3 OF INTEGER<\/p>\n<p>LET a2[50,100] = 12456<\/p>\n<p>LET a2[51,1000] = 12456<\/p>\n<p>DISPLAY a2.getLength()<\/p>\n<p>DISPLAY a2[50].getLength()<\/p>\n<p>DISPLAY a2[51].getLength()<\/p>\n<p>LET a3[50,100,100] = 12456<\/p>\n<p>LET a3[51,101,1000] = 12456<\/p>\n<p>DISPLAY a3.getLength()<\/p>\n<p>DISPLAY a3[50].getLength()<\/p>\n<p>DISPLAY a3[51].getLength()<\/p>\n<p>DISPLAY a3[50,100].getLength()<\/p>\n<p>DISPLAY a3[51,101].getLength()<\/p>\n<p>CALL a3[50].insertElement(10)<\/p>\n<p>CALL a3[50,10].insertElement(1)<\/p>\n<p>END MAIN<\/p>\n<p>\u7a0b\u5e8f\u4e2d\u5e38\u89c1\u7684<strong>\u9759\u6001\u6570\u7ec4<\/strong>\u5b9a\u4e49\uff1a\u4e3b\u8981\u7528\u4e8e<strong>\u5355\u5934<\/strong>\uff0c\u642d\u914dexecute\uff0cfetch\u4f7f\u7528<\/p>\n<p>DEFINE p_employee RECORD<\/p>\n<p>no LIKE employee_t.no,<\/p>\n<p>name LIKE employee_t.name<\/p>\n<p>tel LIKE employee_t.tel,<\/p>\n<p>address LIKE employee_t.address,<\/p>\n<p>salary LIKE employee_t.salary<\/p>\n<p>END RECORD<\/p>\n<p>INITIALIZE p_employee.* TO NULL # \u9759\u6001\u6570\u7ec4\u7684\u521d\u59cb\u5316<\/p>\n<p>\u7a0b\u5e8f\u4e2d\u5e38\u89c1\u7684<strong>\u52a8\u6001\u6570\u7ec4<\/strong>\u5b9a\u4e49\uff1a\u4e3b\u8981\u7528\u4e8e<strong>\u5355\u8eab<\/strong>\u6216<strong>\u67e5\u8be2\u62a5\u8868<\/strong>\uff0c\u642d\u914dforeach\u4f7f\u7528<\/p>\n<p>DEFINE p_employee DYNAMIC ARRAY OF RECORD<\/p>\n<p>no LIKE employee_t.no,<\/p>\n<p>name LIKE employee_t.name<\/p>\n<p>tel LIKE employee_t.tel,<\/p>\n<p>address LIKE employee_t.address,<\/p>\n<p>salary LIKE employee_t.salary<\/p>\n<p>END RECORD<\/p>\n<p>CALL p_employee.clear() # \u52a8\u6001\u6570\u7ec4\u7684\u521d\u59cb\u5316<\/p>\n<h2>\u663e\u793a\u6570\u7ec4\u5185\u5bb9 DISPLAY ARRAY<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"708\" class=\"wp-image-8302\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-235.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u8bed\u6cd5\uff1a<\/p>\n<p>DISPLAY ARRAY record-array TO screen-array.*<\/p>\n<p>[ HELP help-number ]<\/p>\n<p>[ATTRIBUTE ( [,&#8230;] )<\/p>\n<p>\u793a\u4f8b\uff1a<\/p>\n<p># \u5c064gl\u91cc\u9762\u7684\u5168\u5c40\u53d8\u91cf\uff08\u52a8\u6001\u6570\u7ec4\uff09\u663e\u793a\u5230\u5c4f\u5e55\u53d8\u91cf\u4e0a<\/p>\n<p>DISPLAY ARRAY p_employee.* TO s_employee.*<\/p>\n<h2>\u6570\u7ec4\u5185\u5bb9\u8f93\u5165 INPUT ARRAY<\/h2>\n<ul>\n<li>BEFORE INPUT<br \/>\n\u5728\u8fdb\u5165input\u4e4b\u524d\u8981\u505a\u7684\u9700\u6c42\u8bbe\u5b9a<br \/>\n\u4f8b\u5982\u5c06\u5355\u8eab\u7684\u680f\u4f4d\u8bbe\u7f6e\u4e3a\u4e0d\u53ef\u5f55\u5165<\/li>\n<li>AFTER INPUT<\/li>\n<li>BEFORE ROW<br \/>\n\u5728\u8fdb\u5165\u5355\u8eab\u7684\u67d0\u884c\u4e4b\u524d\uff0c\u73b0\u6709\u5f00\u542f\u4e8b\u52a1\uff0c\u5224\u65ad\u5f53\u524d\u662f\u4fee\u6539\u8fd8\u662f\u65b0\u589e\u7684\u72b6\u6001\uff0c\u5982\u679c\u662f\u4fee\u6539\u7684\u72b6\u6001\uff0c\u9700\u8981\u5c06\u5355\u8eab\u7684\u8d44\u6599\u9501\u4f4f\u4e0d\u8ba9\u5176\u4ed6\u4eba\u4fee\u6539<\/li>\n<li>AFTER ROW<\/li>\n<li>BEFORE FIELD field-list<\/li>\n<li><strong>AFTER FIELD field-list<\/strong><\/li>\n<li>ON ROW CHANGE<br \/>\n\u5f53\u5355\u8eab\u7684\u67d0\u4e00\u884c\u53d1\u751f\u6539\u53d8\u65f6\uff0c\u4f1aupdate\u5355\u8eab\u8868\u7684\u8d44\u6599<\/li>\n<li>ON CHANGE field-list<\/li>\n<li>ON IDLE idle-seconds<\/li>\n<li>ON ACTION action-name<\/li>\n<li>BEFORE INSERT<br \/>\n\u5982\u679c\u5f53\u524d\u7684\u72b6\u6001\u662f\u65b0\u589e\uff0c\u8fd9\u91cc\u662f\u7ed9\u5355\u8eab\u7684\u680f\u4f4d\u505a\u9884\u8bbe\u503c\uff0c\u4f8b\u5982\uff1a\u9879\u6b21\u81ea\u589e\uff0c\u590d\u9009\u6846\u9ed8\u8ba4\u4e3aN\u2026<\/li>\n<li>AFTER INSERT<br \/>\n\u5c06\u5728\u5355\u8eab\u8f93\u5165\u7684\u503c\u5224\u65ad\uff0c\u662f\u5426\u5df2\u7ecf\u5b58\u5728\u5355\u8eab\u8868\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u5c31\u65b0\u589e\u4e00\u7b14\u6570\u636e\u5230\u8868\uff0c\u5982\u679c\u5df2\u7ecf\u5b58\u5728\u5c31\u4fee\u6539\u8868\u7684\u8d44\u6599<\/li>\n<li>BEFORE DELETE<br \/>\n\u5728\u5220\u9664\u5355\u8eab\u6570\u636e\u65f6\u8981\u505a\u7684\u903b\u8f91\u5224\u65ad<\/li>\n<li>AFTER DELETE<\/li>\n<li>END INPUT<\/li>\n<\/ul>\n<h2>\u63a7\u5236\u6bb5\u6267\u884c\u987a\u5e8f<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"833\" height=\"1158\" class=\"wp-image-8303\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-236.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" srcset=\"https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-236.png 833w, https:\/\/www.hefeiyu.com\/wp-content\/uploads\/2021\/09\/unnamed-file-236-768x1068.png 768w\" sizes=\"auto, (max-width: 833px) 100vw, 833px\" \/><\/p>\n<p>\u7248\u6743\u58f0\u660e\uff1a\u672c\u6587\u4e3a\u535a\u4e3b\u539f\u521b\u6587\u7ae0\uff0c\u9075\u5faa<a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0CC 4.0 BY-SA\u00a0<\/a>\u7248\u6743\u534f\u8bae\uff0c\u8f6c\u8f7d\u8bf7\u9644\u4e0a\u539f\u6587\u51fa\u5904\u94fe\u63a5\u548c\u672c\u58f0\u660e\u3002<\/p>\n<p>\u672c\u6587\u94fe\u63a5\uff1a<a href=\"https:\/\/blog.csdn.net\/weixin_43734095\/article\/details\/112915863\">https:\/\/blog.csdn.net\/weixin_43734095\/article\/details\/112915863<\/a><\/p>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.hefeiyu.com\">\u8d6b\u975e\u57df<\/a> &raquo; <a href=\"https:\/\/www.hefeiyu.com\/?p=8292\">\u3010\u5b9e\u4e60\u4e4bT100\u5f00\u53d1\u3011Genero FGL (TIPTOP4GL) \u5b66\u4e60\u7b14\u8bb02<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp; \u672c\u7ae0\u8282\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9 Genero FGL\u5b66\u4e60 CURSOR CONSTRUCT\uff1a\u83b7\u53d6\u7528\u6237\u8f93\u5165\u7ec4\u6210\u3010WHERE\u6761\u4ef6\u3011 PREPARE\uff1a\u5c06\u3010SQL\u5b57\u7b26\u4e32\u3011\u8f6c\u6210\u3010\u53ef\u6267\u884cSQL\u3011 FREE\uff1a\u91ca\u653e PREPARE \u7684\u8bb0\u5f55 \u6570\u636e\u7684\u67e5\u8be2 SCROLL [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[487,490],"tags":[1013,1009,1014,704],"class_list":["post-8292","post","type-post","status-publish","format-standard","hentry","category-t100-erp","category-490","tag-genero-fgl","tag-t100","tag-1014","tag-704"],"_links":{"self":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/8292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8292"}],"version-history":[{"count":1,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/8292\/revisions"}],"predecessor-version":[{"id":8304,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/8292\/revisions\/8304"}],"wp:attachment":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}