语法:PL SQL IDE:PL/SQL开发人员自动化创建使用动态SQL使用游标或循环表程序 - PLSQL
我试图生成4桌使用了一系列区域码的每个区域。
据我所知,生成一个包含所有区域的表格并截断并替换此表格可能会更有效率,但基于所需的结构,我不允许这样做。
4个地区来自特定表
SELECT DISTINCT REGION
FROM REGION_TABLE
;
什么是产生这一系列动态表的最佳方法是什么?
我试图使用游标和循环,但我不确定将此游标集成到以下过程中的方法。
DECLARE
CURSOR C_REGION IS
SELECT DISTINCT REGION FROM REGION_TABLE ;
BEGIN
FOR L_IDX IN C_REGION
LOOP
DBMS_OUTPUT.PUTLINE(L_IDX.C_REGION);
END LOOP;
END;
使用上面的光标值,我怎么去在where子句中
-- 4 REGIONS - NORTH SOUTH EAST WEST,
CREATE OR REPLACE PROCEDURE SALES_ORDER_TBL_PROC
(
REGION IN VARCHAR2
, RETURNCODE OUT NUMBER
, ERROR_MESSAGE OUT VARCHAR2
)
IS
TABLE_NAME VARCHAR2(30);
SQL_STR VARCHAR2;
REGION_VAR VARCHAR;
BEGIN
TABLE_NAME := 'SALES_COUNT_'||REGION_VAR;
SQL_STR := 'CREATE TABLE '||TABLE_NAME||
' AS
(
SELECT
REGION
, COUNT(DISTINCT MEMBER_ID) AS NUM_MBR
FROM INCREMENTAL_SALES_TBL
WHERE 1=1
AND REGION = '||REGION_VAR||
'GROUP BY REGION)'
;
EXECUTE IMMEDIATE SQL_STR ;
RETURNCODE := 0;
EXCEPTION WHEN OTHERS THEN
RETURNCODE := SQLCODE;
ERROR_MESSAGE :='ERR:Creating/Altering table '||TABLE_NAME ||'-'||SQLERRM;
END;
/
BEGIN
SALES_ORDER_TBL_PROC;
END;
将这些值不仅在SQL语句创建表部分使用的表名称,但作为一个参数
创建表格看起来像是一次性工作。为什么你需要一个程序呢? – GurV
这些是报告表。 - 公司程序只需要他们在飞行中重建。 – BGDev
更好地截断和加载数据 – GurV